# credits original: yukki music # kurigram versions: latest # code by @xpushz import asyncio from pyrogram import * from pyrogram.types import * from pyrogram.errors import * from akn.utils.logger import LOGS from akn.utils.database import db @Client.on_message( ~filters.scheduled & filters.command(["broadcast"]) & ~filters.forwarded ) async def braodcast_message(client, message): global IS_BROADCASTING is_sudo = await db.get_alldlbot_sudouser(client.me.id, message.from_user.id) protect_own = await db.get_alldlbot_by_user_id(message.from_user.id, client.me.id) if not protect_own and not is_sudo: return await message.reply_text("You are not allowed here.") if message.reply_to_message: x = message.reply_to_message.id y = message.chat.id else: if len(message.command) < 2: return await message.reply_text("**Usage**:\n/broadcast [MESSAGE] or [Reply to a Message]") query = message.text.split(None, 1)[1] if "-pin" in query: query = query.replace("-pin", "") if "-nobot" in query: query = query.replace("-nobot", "") if "-pinloud" in query: query = query.replace("-pinloud", "") if "-user" in query: query = query.replace("-user", "") if query == "": return await message.reply_text("Please provide some text to broadcast.") IS_BROADCASTING = True if "-nobot" not in message.text: sent = 0 pin = 0 chats = [] schats = await db.alldlbot_all_broadcast_group(client.me.id) for chat in schats: chats.append(int(chat)) for i in chats: try: m = ( await client.forward_messages(i, y, x) if message.reply_to_message else await client.send_message(i, text=query) ) if "-pin" in message.text: try: await m.pin(disable_notification=True) pin += 1 except Exception: continue elif "-pinloud" in message.text: try: await m.pin(disable_notification=False) pin += 1 except Exception: continue sent += 1 except FloodWait as e: flood_time = int(e.x) if flood_time > 200: continue await asyncio.sleep(flood_time) except Exception: continue try: await message.reply_text( f"Broadcasted Message In {sent} Chats with {pin} Pins from Bot" ) except: pass if "-user" in message.text: susr = 0 served_users = [] susers = await db.alldlbot_all_broadcast(client.me.id) for user in susers: served_users.append(int(user)) for i in served_users: try: m = ( await client.forward_messages(i, y, x) if message.reply_to_message else await client.send_message(i, text=query) ) susr += 1 except FloodWait as e: flood_time = int(e.x) if flood_time > 200: continue await asyncio.sleep(flood_time) except Exception: pass try: await message.reply_text( f"**Broadcasted Message to {susr} Users.**" ) except: pass IS_BROADCASTING = False