async def stagall_(message: Message): """ tag recent members without spam """ chat_id = message.chat.id chat = await userge.get_chat(chat_id) await message.edit(f"```tagging everyone in {chat.title}```") replied = message.reply_to_message if replied: text = replied.text else: text = message.input_str if not text: await message.edit( "```Without reason, I will not tag Members... (*>_<*)```", del_in=5) return text = f"<code>{text}</code>" member = userge.iter_chat_members(chat_id) async for members in member: if not members.user.is_bot: text += mention_html(members.user.id, "\u200b") await message.delete() if message.reply_to_message: await userge.send_message(chat_id, text, reply_to_message_id=replied.message_id, parse_mode="html") else: await userge.send_message(chat_id, text, parse_mode="html")
async def get_peer_list(message: Message, limit: int = 10) -> Optional[List]: chat_id = message.chat.id user_ids = [ member.user.id async for member in userge.iter_chat_members(chat_id, limit=100) if not (member.user.is_bot or member.user.is_deleted or member.user.id == message.from_user.id) ] return await append_peer_user(user_ids, limit)
async def chat_users_(message: Message): """find chat users""" input_ = message.input_str if not input_: limit_ = 100 chat_ = message.chat.id else: if len(input_.split()) > 1: chat_ = input_.split()[1:] limit_ = input_.split()[0] try: await userge.get_chat(chat_) except BaseException: await message.edit( f"Chat <code>{chat_}</code> is not a valid chat...") return else: chat_ = input_ try: await userge.get_chat(chat_) limit_ = 100 except BaseException: chat_ = message.chat.id limit_ = input_ if int(limit_) > 10000: await message.edit( f"Current limit(<code>{limit_}</code>) can't be more than 10000..." ) return title = (await userge.get_chat(chat_)).title await message.edit( f"Getting <b>{limit_}</b> members of chat <b>{title}</b>...") list_ = "List of <b>{}</b> members" + f"in chat <b>{title}</b>:\n\n" sr_n = 1 lim = 0 async for mem in userge.iter_chat_members(chat_): try: check = await userge.get_users(mem.user.id) user = full_name(check) except BaseException: user = "******" list_ += ( f"• [{sr_n}] {user} - @{mem.user.username}\n" if mem.user.username else f"• [{sr_n}] <a href='tg://user?id={mem.user.id}'>{user}</a>\n") sr_n += 1 lim += 1 if len(list_) > 4040: await message.reply(list_.format(sr_n)) list_ = "" if int(limit_) != 10000: if lim == limit_: break if len(list_) != 0: await message.reply(list_.format(sr_n - 1)) await message.delete()
async def keck_all(message: Message): chat = message.chat.id keck_c = 0 await message.edit("Hold on Trying to kick all Members") async for to_kick in userge.iter_chat_members(chat): user = to_kick.user.id await userge.kick_chat_member(chat, user, int(time.time() + 60)) keck_c += 1 await asyncio.sleep(0.5) await message.edit(f"Kicked {keck_c} members in {message.chat.title}")
async def ban_all(message: Message): chat = message.chat.id ben_c = 0 await message.edit("Hold on Trying to ban all Members") async for to_ban in userge.iter_chat_members(chat): user = to_ban.user.id await userge.kick_chat_member(chat, user) ben_c += 1 await asyncio.sleep(0.5) await message.edit(f"Banned {ben_c} members in {message.chat.title}")
async def mentionadmins(message: Message): mentions = "🛡 **Admin List** 🛡\n" chat_id = message.filtered_input_str flags = message.flags men_admins = '-m' in flags men_creator = '-mc' in flags show_id = '-id' in flags if not chat_id: chat_id = message.chat.id try: async for x in userge.iter_chat_members(chat_id=chat_id, filter="administrators"): status = x.status u_id = x.user.id username = x.user.username or None full_name = (await userge.get_user_dict(u_id))['flname'] if status == "creator": if men_admins or men_creator: mentions += f"\n 👑 [{full_name}](tg://user?id={u_id})" elif username: mentions += f"\n 👑 [{full_name}](https://t.me/{username})" else: mentions += f"\n 👑 {full_name}" if show_id: mentions += f" `{u_id}`" elif status == "administrator": if men_admins: mentions += f"\n ⚜ [{full_name}](tg://user?id={u_id})" elif username: mentions += f"\n ⚜ [{full_name}](https://t.me/{username})" else: mentions += f"\n ⚜ {full_name}" if show_id: mentions += f" `{u_id}`" except Exception as e: mentions += " " + str(e) + "\n" await message.delete() await userge.send_message(chat_id=message.chat.id, text=mentions, disable_web_page_preview=True)
async def bots_in_chat(message: Message): admin, member = [], [] async for bots in userge.iter_chat_members(message.chat.id, filter="bots"): status = bots.status u_id = bots.user.id username = bots.user.username bot_info = f" • @{username}" if "-id" in message.flags: bot_info += f" [<code>{u_id}</code>]" if status == "administrator": admin.append(bot_info) else: member.append(bot_info) await message.reply(f"🤖 <b>BOTS</b> in {message.chat.title}\n\n" + "<b>Admin:</b>\n" + "\n".join(admin) + "\n\n" + "<b>Member:</b>\n" + "\n".join(member))
async def stagall_(message: Message): """tag recent members without spam""" chat_id = message.chat.id chat = await userge.get_chat(chat_id) await message.edit(f"```tagging everyone in {chat.title}```") replied = message.reply_to_message text = message.input_str if not (text or replied): await message.err("Without reason, I will not tag Members...(=_=)") return text = f"`{text}`" if text else "" message_id = replied.message_id if replied else None member = userge.iter_chat_members(chat_id) async for members in member: if not members.user.is_bot: text += mention_html(members.user.id, "\u200b") await message.delete() await userge.send_message(chat_id, text, reply_to_message_id=message_id)
async def botz(message: Message): """Check the bots present in group.""" chat = message.input_str if not chat: chat = message.chat.id try: chat_ = await userge.get_chat(chat) if chat_.type == "private": await message.edit( "`You can't use this command for private chats...`", del_in=5 ) return chat = chat_.id except BaseException: await message.edit("`Provide a valid chat as input...`", del_in=5) return admin_b = [] member_b = [] total = 0 async for bot in userge.iter_chat_members(chat, filter="bots"): total += 1 mention = bot.user.mention if bot.status == "administrator": admin_b.append(mention) else: member_b.append(mention) adm = len(admin_b) mem = len(member_b) out = f"<b>BOTS</b> in <b>{chat_.title}</b>: `[{total}]`\n\n" out += f"<b>Admin bot(s)</b>: [{adm}]\n" out += "🤖 " if admin_b else "" out += "\n🤖 ".join(admin_b) out += "\n\n" if admin_b else "\n" out += f"<b>Member bot(s)</b>: [{mem}]\n" out += "🤖 " if member_b else "" out += "\n🤖 ".join(member_b) await message.edit(out)
async def botz(message: Message): """Check the bots present in group.""" chat = message.chat.id admin_b = [] member_b = [] total = 0 async for bot in userge.iter_chat_members(chat, filter="bots"): total += 1 mention = bot.user.mention if bot.status == "administrator": admin_b.append(mention) else: member_b.append(mention) adm = len(admin_b) mem = len(member_b) out = f"<b>BOTS</b> in <b>{message.chat.title}</b>: [{total}]\n\n" out += f"<b>Admin bot(s)</b>: [{adm}]\n" out += "" if admin_b else "" out += "\n".join(admin_b) out += "\n\n" if admin_b else "\n" out += f"<b>Member bot(s)</b>: [{mem}]\n" out += "" if member_b else "" out += "\n".join(member_b) await message.edit(out)
async def zombie_clean(message: Message): """ this function can remove deleted accounts from tg group """ chat_id = message.chat.id get_group = await userge.get_chat(chat_id) flags = message.flags rm_delaccs = '-c' in flags can_clean = await is_admin(message) if rm_delaccs: del_users = 0 del_admins = 0 del_total = 0 del_stats = r"`Zero zombie accounts found in this chat... WOOHOO group is clean.. \^o^/`" if can_clean: await message.edit( "`Hang on!! cleaning zombie accounts from this chat..`") async for member in userge.iter_chat_members(chat_id): if member.user.is_deleted: try: await userge.kick_chat_member(chat_id, member.user.id, int(time.time() + 45)) except UserAdminInvalid: del_users -= 1 del_admins += 1 except FloodWait as e_f: time.sleep(e_f.x) del_users += 1 del_total += 1 if del_admins > 0: del_stats = f"`👻 Found` **{del_total}** `total zombies..`\ \n`🗑 Cleaned` **{del_users}** `zombie (deleted) accounts from this chat..`\ \n🛡 **{del_admins}** `deleted admin accounts are skipped!!`" else: del_stats = f"`👻 Found` **{del_total}** `total zombies..`\ \n`🗑 Cleaned` **{del_users}** `zombie (deleted) accounts from this chat..`" await message.edit(f"{del_stats}", del_in=0) await CHANNEL.log(f"#ZOMBIE_CLEAN\n\n" f"CHAT: `{get_group.title}` (`{chat_id}`)\n" f"TOTAL ZOMBIE COUNT: `{del_total}`\n" f"CLEANED ZOMBIE COUNT: `{del_users}`\n" f"ZOMBIE ADMIN COUNT: `{del_admins}`") else: await message.edit( r"`i don't have proper permission to do that! (*  ̄︿ ̄)`", del_in=0) else: del_users = 0 del_stats = r"`Zero zombie accounts found in this chat... WOOHOO group is clean.. \^o^/`" await message.edit("`🔎 Searching for zombie accounts in this chat..`") async for member in userge.iter_chat_members(chat_id): if member.user.is_deleted: del_users += 1 if del_users > 0: del_stats = f"`Found` **{del_users}** `zombie accounts in this chat.`" await message.edit( f"🕵️♂️ {del_stats} " "`you can clean them using .zombies -c`", del_in=0) await CHANNEL.log(f"#ZOMBIE_CHECK\n\n" f"CHAT: `{get_group.title}` (`{chat_id}`)\n" f"ZOMBIE COUNT: `{del_users}`") else: await message.edit(f"{del_stats}", del_in=0) await CHANNEL.log(f"#ZOMBIE_CHECK\n\n" f"CHAT: `{get_group.title}` (`{chat_id}`)\n" r"ZOMBIE COUNT: `WOOHOO group is clean.. \^o^/`")
async def cache_admins(chat_id: int) -> None: k = [ member.user.id async for member in userge.iter_chat_members(chat_id) if member.status in ("creator", "administrator") ] ADMINS[chat_id] = k