taslim19
MusicV2
a8e9b84
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())