from pyrogram import filters import datetime import time from database.users_chats_db import db from misskaty.vars import SUDO from utils import broadcast_messages import asyncio from misskaty import app @app.on_message(filters.command("broadcast") & filters.user(SUDO) & filters.reply) async def broadcast(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 == "Bocked": 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}")