async def _(event): if event.fwd_from: return if event.is_group: if not await can_ban_users(message=event): return else: return # Here laying the sanity check chat = await event.get_chat() admin = chat.admin_rights.ban_users creator = chat.creator # Well if not creator: await event.reply("`I don't have enough permissions!`") return c = 0 KICK_RIGHTS = ChatBannedRights(until_date=None, view_messages=True) done = await event.reply("Working ...") async for i in tbot.iter_participants(event.chat_id): if isinstance(i.status, UserStatusLastMonth): status = await tbot( EditBannedRequest(event.chat_id, i, KICK_RIGHTS)) if not status: return c = c + 1 if isinstance(i.status, UserStatusLastWeek): status = await tbot( EditBannedRequest(event.chat_id, i, KICK_RIGHTS)) if not status: return c = c + 1 if c == 0: await done.edit("Got no one to kick.") return required_string = "Successfully Kicked **{}** users" await event.reply(required_string.format(c))
async def _(event): if not event.is_group: return if event.is_group: if not await can_ban_users(message=event): return # Here laying the sanity check chat = await event.get_chat() admin = chat.admin_rights.ban_users creator = chat.creator # Well if not admin and not creator: await event.reply("`I don't have enough permissions!`") return done = await event.reply("Working ...") p = 0 async for i in tbot.iter_participants(event.chat_id, filter=ChannelParticipantsBanned, aggressive=True): rights = ChatBannedRights( until_date=0, send_messages=False, ) try: await tbot( functions.channels.EditBannedRequest(event.chat_id, i, rights)) except FloodWaitError as ex: logger.warn("sleeping for {} seconds".format(ex.seconds)) sleep(ex.seconds) except Exception as ex: await event.reply(str(ex)) else: p += 1 if p == 0: await done.edit("No one is muted in this chat") return required_string = "Successfully unmuted **{}** users" await event.reply(required_string.format(p))
async def get_admin(show): if show.is_group: if not show.sender_id == OWNER_ID: if not await is_register_admin(show.input_chat, show.sender_id): return else: return info = await tbot.get_entity(show.chat_id) title = info.title if info.title else "this chat" mentions = f"<b>Admins in {title}:</b> \n" try: async for user in tbot.iter_participants( show.chat_id, filter=ChannelParticipantsAdmins): if not user.deleted: link_unf = '•<a href="tg://user?id={}">{}</a>' link = link_unf.format(user.id, user.first_name) userid = f"<code>{user.id}</code>" mentions += f"\n{link}" else: mentions += f"\nDeleted Account <code>{user.id}</code>" except ChatAdminRequiredError as err: mentions += " " + str(err) + "\n" await show.reply(mentions, parse_mode="html")
async def get_users(show): if not show.is_group: return if show.is_group: if not await is_register_admin(show.input_chat, show.sender_id): return info = await tbot.get_entity(show.chat_id) title = info.title if info.title else "this chat" mentions = "Users in {}: \n".format(title) async for user in tbot.iter_participants(show.chat_id): if not user.deleted: mentions += f"\n[{user.first_name}](tg://user?id={user.id}) {user.id}" else: mentions += f"\nDeleted Account {user.id}" file = open("userslist.txt", "w+") file.write(mentions) file.close() await tbot.send_file( show.chat_id, "userslist.txt", caption="Users in {}".format(title), reply_to=show.id, ) os.remove("userslist.txt")
async def rm_deletedacc(show): """ For .delusers command, list all the ghost/deleted accounts in a chat. """ con = show.pattern_match.group(1).lower() del_u = 0 del_status = "`No deleted accounts found, Group is cleaned as Hell`" if not show.is_group: return if show.is_group: if not await can_ban_users(message=show): return # Here laying the sanity check chat = await show.get_chat() admin = chat.admin_rights.ban_users creator = chat.creator # Well if not admin and not creator: await show.reply("`I don't have enough permissions!`") return if con != "clean": await show.reply("`Searching for zombie accounts...`") async for user in tbot.iter_participants(show.chat_id): if user.deleted: del_u += 1 if del_u > 0: del_status = f"Found **{del_u}** deleted account(s) in this group,\ \nclean them by using `/zombies clean`" await show.reply(del_status) return await show.reply("`Kicking deleted accounts...`") del_u = 0 del_a = 0 async for user in tbot.iter_participants(show.chat_id): if user.deleted: try: await tbot( EditBannedRequest(show.chat_id, user.id, BANNED_RIGHTS)) except ChatAdminRequiredError: await show.reply("`I don't have ban rights in this group`") return except UserAdminInvalidError: del_u -= 1 del_a += 1 await tbot(EditBannedRequest(show.chat_id, user.id, UNBAN_RIGHTS)) del_u += 1 if del_u > 0: del_status = f"Cleaned **{del_u}** deleted account(s)" if del_a > 0: del_status = f"Cleaned **{del_u}** deleted account(s) \ \n**{del_a}** deleted admin accounts are not removed" await show.reply(del_status)