Spaces:
Paused
Paused
import asyncio | |
from pyrogram import filters | |
from pyrogram.enums import ChatMembersFilter | |
from pyrogram.errors import FloodWait | |
from DragMusic import app | |
from DragMusic.misc import SUDOERS | |
from DragMusic.utils.database import ( | |
get_active_chats, | |
get_authuser_names, | |
get_client, | |
get_served_chats, | |
get_served_users, | |
) | |
from DragMusic.utils.decorators.language import language | |
from DragMusic.utils.formatters import alpha_to_int | |
from config import adminlist | |
IS_BROADCASTING = False | |
async def braodcast_message(client, message, _): | |
global IS_BROADCASTING | |
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(_["broad_2"]) | |
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 "-assistant" in query: | |
query = query.replace("-assistant", "") | |
if "-user" in query: | |
query = query.replace("-user", "") | |
if query == "": | |
return await message.reply_text(_["broad_8"]) | |
IS_BROADCASTING = True | |
await message.reply_text(_["broad_1"]) | |
if "-nobot" not in message.text: | |
sent = 0 | |
pin = 0 | |
chats = [] | |
schats = await get_served_chats() | |
for chat in schats: | |
chats.append(int(chat["chat_id"])) | |
for i in chats: | |
try: | |
m = ( | |
await app.forward_messages(i, y, x) | |
if message.reply_to_message | |
else await app.send_message(i, text=query) | |
) | |
if "-pin" in message.text: | |
try: | |
await m.pin(disable_notification=True) | |
pin += 1 | |
except: | |
continue | |
elif "-pinloud" in message.text: | |
try: | |
await m.pin(disable_notification=False) | |
pin += 1 | |
except: | |
continue | |
sent += 1 | |
await asyncio.sleep(0.2) | |
except FloodWait as fw: | |
flood_time = int(fw.value) | |
if flood_time > 200: | |
continue | |
await asyncio.sleep(flood_time) | |
except: | |
continue | |
try: | |
await message.reply_text(_["broad_3"].format(sent, pin)) | |
except: | |
pass | |
if "-user" in message.text: | |
susr = 0 | |
served_users = [] | |
susers = await get_served_users() | |
for user in susers: | |
served_users.append(int(user["user_id"])) | |
for i in served_users: | |
try: | |
m = ( | |
await app.forward_messages(i, y, x) | |
if message.reply_to_message | |
else await app.send_message(i, text=query) | |
) | |
susr += 1 | |
await asyncio.sleep(0.2) | |
except FloodWait as fw: | |
flood_time = int(fw.value) | |
if flood_time > 200: | |
continue | |
await asyncio.sleep(flood_time) | |
except: | |
pass | |
try: | |
await message.reply_text(_["broad_4"].format(susr)) | |
except: | |
pass | |
if "-assistant" in message.text: | |
aw = await message.reply_text(_["broad_5"]) | |
text = _["broad_6"] | |
from DragMusic.core.userbot import assistants | |
for num in assistants: | |
sent = 0 | |
client = await get_client(num) | |
async for dialog in client.get_dialogs(): | |
try: | |
await client.forward_messages( | |
dialog.chat.id, y, x | |
) if message.reply_to_message else await client.send_message( | |
dialog.chat.id, text=query | |
) | |
sent += 1 | |
await asyncio.sleep(3) | |
except FloodWait as fw: | |
flood_time = int(fw.value) | |
if flood_time > 200: | |
continue | |
await asyncio.sleep(flood_time) | |
except: | |
continue | |
text += _["broad_7"].format(num, sent) | |
try: | |
await aw.edit_text(text) | |
except: | |
pass | |
IS_BROADCASTING = False | |
async def auto_clean(): | |
while not await asyncio.sleep(10): | |
try: | |
served_chats = await get_active_chats() | |
for chat_id in served_chats: | |
if chat_id not in adminlist: | |
adminlist[chat_id] = [] | |
async for user in app.get_chat_members( | |
chat_id, filter=ChatMembersFilter.ADMINISTRATORS | |
): | |
if user.privileges.can_manage_video_chats: | |
adminlist[chat_id].append(user.user.id) | |
authusers = await get_authuser_names(chat_id) | |
for user in authusers: | |
user_id = await alpha_to_int(user) | |
adminlist[chat_id].append(user_id) | |
except: | |
continue | |
asyncio.create_task(auto_clean()) | |