async def list_admins(chat_id: int): return [ member.user.id async for member in app.iter_chat_members( chat_id, filter="administrators" ) ]
async def ban_deleted_accounts(_, message): try: from_user_id = message.from_user.id chat_id = message.chat.id permissions = await member_permissions(chat_id, from_user_id) if "can_restrict_members" in permissions or from_user_id in SUDOERS: deleted_users = [] banned_users = 0 async for i in app.iter_chat_members(chat_id): if i.user.is_deleted: deleted_users.append(i.user.id) if len(deleted_users) > 0: for deleted_user in deleted_users: try: await message.chat.kick_member(deleted_user) except Exception as e: print(str(e)) pass banned_users += 1 await message.reply_text( f"Banned {banned_users} Deleted Accounts") else: await message.reply_text("No Deleted Accounts In This Chat") return else: await message.reply_text("You Don't Have Enough Permissions") except Exception as e: await message.reply_text(str(e)) print(str(e))
async def admin_cache_func(_, cmu: ChatMemberUpdated): if cmu.old_chat_member and cmu.old_chat_member.promoted_by: admins_in_chat[cmu.chat.id] = { "last_updated_at": time(), "data": [ member.user.id async for member in app.iter_chat_members( cmu.chat.id, filter="administrators") ], } log.info(f"Updated admin cache for {cmu.chat.id} [{cmu.chat.title}]")
async def couple(_, message): if message.chat.type == "private": await message.reply_text("This command only works in groups.") return try: chat_id = message.chat.id is_selected = await get_couple(chat_id, today) if not is_selected: list_of_users = [] async for i in app.iter_chat_members(message.chat.id): if not i.user.is_bot: list_of_users.append(i.user.id) if len(list_of_users) < 2: await message.reply_text("Not enough users") return c1_id = random.choice(list_of_users) c2_id = random.choice(list_of_users) while c1_id == c2_id: c1_id = random.choice(list_of_users) c1_mention = (await app.get_users(c1_id)).mention c2_mention = (await app.get_users(c2_id)).mention couple_selection_message = f"""**Couple of the day:** {c1_mention} + {c2_mention} = ❤️ __New couple of the day may be chosen at 12AM {tomorrow}__""" await app.send_message( message.chat.id, text=couple_selection_message ) couple = {"c1_id": c1_id, "c2_id": c2_id} await save_couple(chat_id, today, couple) elif is_selected: c1_id = int(is_selected["c1_id"]) c2_id = int(is_selected["c2_id"]) c1_name = (await app.get_users(c1_id)).first_name c2_name = (await app.get_users(c2_id)).first_name couple_selection_message = f"""Couple of the day: [{c1_name}](tg://openmessage?user_id={c1_id}) + [{c2_name}](tg://openmessage?user_id={c2_id}) = ❤️ __New couple of the day may be chosen at 12AM {tomorrow}__""" await app.send_message( message.chat.id, text=couple_selection_message ) except Exception as e: print(e) await message.reply_text(e)
async def list_admins(chat_id: int): global admins_in_chat if chat_id in admins_in_chat: interval = time() - admins_in_chat[chat_id]["last_updated_at"] if interval < 3600: return admins_in_chat[chat_id]["data"] admins_in_chat[chat_id] = { "last_updated_at": time(), "data": [ member.user.id async for member in app.iter_chat_members(chat_id, filter="administrators") ], } return admins_in_chat[chat_id]["data"]
async def ban_deleted_accounts(_, message: Message): chat_id = message.chat.id deleted_users = [] banned_users = 0 async for i in app.iter_chat_members(chat_id): if i.user.is_deleted: deleted_users.append(i.user.id) if len(deleted_users) > 0: for deleted_user in deleted_users: try: await message.chat.kick_member(deleted_user) except Exception: pass banned_users += 1 await message.reply_text(f"Banned {banned_users} Deleted Accounts") else: await message.reply_text("There are no deleted accounts in this chat")
async def list_members(group_id): list_of_members = [] async for member in app.iter_chat_members(group_id): list_of_members.append(member.user.id) return list_of_members
async def list_admins(group_id): list_of_admins = [] async for member in app.iter_chat_members(group_id, filter="administrators"): list_of_admins.append(member.user.id) return list_of_admins
async def list_members(group_id): return [ member.user.id async for member in app.iter_chat_members(group_id) ]