wer
unknown
python
2 years ago
3.6 kB
4
Indexable
from pyrogram import Client, filters from pyrogram.types import Message, ChatMember from apscheduler.schedulers.asyncio import AsyncIOScheduler import asyncio from pyrogram.enums.chat_members_filter import ChatMembersFilter from pyrogram.enums.chat_member_status import ChatMemberStatus from dotenv import load_dotenv import random import os if not os.path.exists("config.env"): print("config.env dosyanizi olusturun.") exit(0) load_dotenv("config.env") api_id = os.environ.get("API_ID", None) api_hash = os.environ.get("API_HASH", None) bot_token = os.environ.get("BOT_TOKEN", None) groups = os.environ.get("GROUPS", None) users = {} random_users = [] run_task = False async def tag_func(client: Client, message: Message, metin: str, chat_id): global random_users if users: while True: rand = random.randint(0, len(users) - 1) rand_user: ChatMember = users[chat_id][rand] if rand_user not in random_users: await app.send_message( chat_id="-" + chat_id, text=f"{rand_user.user.mention} {metin}" ) random_users.append(rand_user) break if len(users) == len(random_users): random_users = [] app = Client( name="Bot", api_id=api_id, api_hash=api_hash, bot_token=bot_token, sleep_threshold=60, ) scheduler = AsyncIOScheduler() scheduler.start() tasked_groups = [] @app.on_message(filters.group & filters.command("tag", [".", "/", "!"])) async def tag_user(client: Client, message: Message): global tasked_groups if message.chat.id in tasked_groups: await message.reply("`Zaten etiket atıyorum.`", quote=True) return if str(message.chat.id) in groups and str(message.chat.id) not in tasked_groups: admins = [ i.user.id async for i in client.get_chat_members( message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS ) ] if message.from_user.id not in admins: return metin = " ".join(message.text.split(" ")[1:]) global users users[str(message.chat.id).replace("-", "")] = [ i async for i in client.get_chat_members(message.chat.id) if i.status == ChatMemberStatus.MEMBER ] scheduler.add_job( tag_func, "interval", args=[client, message, metin, str(message.chat.id).replace("-", "")], seconds=3, id=str(message.chat.id).replace("-", ""), ) tasked_groups.append(str(message.chat.id)) c = await message.reply("Etiket atıyorum...", quote=True) await asyncio.sleep(1) await c.delete() @app.on_message(filters.group & filters.command("stop", [".", "/", "!"])) async def stop_tag(client: Client, message: Message): if str(message.chat.id) in groups: admins = [ i.user.id async for i in client.get_chat_members( message.chat.id, filter=ChatMembersFilter.ADMINISTRATORS ) ] if message.from_user.id not in admins: return scheduler.remove_job(str(message.chat.id).replace("-", "")) bit = await message.reply("`Yoruldum artık bırakıyorum.`", quote=True) await asyncio.sleep(1) await bit.delete() if __name__ == "__main__": print("Bot başladı.") app.run() print("Bot durdu.")
Editor is loading...