from pyrogram import Client, filters import datetime import time from database.users_chats_db import db from info import ADMINS from utils import broadcast_messages, broadcast_messages_group import asyncio @Client.on_message(filters.command("broadcast") & filters.user(ADMINS) & filters.reply) # https://t.me/GetTGLink/4178 async def verupikkals(bot, message): users = await db.get_all_users() b_msg = message.reply_to_message sts = await message.reply_text( text='Broadcasting your messages...' ) start_time = time.time() total_users = await db.total_users_count() done = 0 blocked = 0 deleted = 0 failed =0 success = 0 async for user in users: pti, sh = await broadcast_messages(int(user['id']), b_msg) if pti: success += 1 elif pti == False: if sh == "Blocked": blocked+=1 elif sh == "Deleted": deleted += 1 elif sh == "Error": failed += 1 done += 1 await asyncio.sleep(2) if not done % 20: await sts.edit(f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}") @Client.on_message(filters.command("grp_broadcast") & filters.user(ADMINS) & filters.reply) async def broadcast_group(bot, message): groups = await db.get_all_chats() b_msg = message.reply_to_message sts = await message.reply_text( text='Broadcasting your messages To Groups...' ) start_time = time.time() total_groups = await db.total_chat_count() done = 0 failed =0 success = 0 async for group in groups: pti, sh = await broadcast_messages_group(int(group['id']), b_msg) if pti: success += 1 elif sh == "Error": failed += 1 done += 1 if not done % 20: await sts.edit(f"Broadcast in progress:\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nSuccess: {success}") time_taken = datetime.timedelta(seconds=int(time.time()-start_time)) await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Groups {total_groups}\nCompleted: {done} / {total_groups}\nSuccess: {success}")