taslim19
MusicV2
a8e9b84
raw
history blame
5.59 kB
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
@app.on_message(filters.command("broadcast") & SUDOERS)
@language
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())