def get_invalid_gban(bot: Bot, update: Update, remove: bool = False): banned = gban_db.get_gban_list() ungbanned_users = 0 ungban_list = [] for user in banned: user_id = user["_id"] sleep(0.5) try: bot.get_chat(user_id) except BadRequest: ungbanned_users += 1 ungban_list.append(user_id) except BaseException: pass if not remove: return ungbanned_users else: for user_id in ungban_list: sleep(0.5) gban_db.ungban_user(user_id) return ungbanned_users
def ungban(update, context): message = update.effective_message args = context.args user_id = extract_user(message, args) if not user_id: message.reply_text("Anda sepertinya tidak mengacu pada pengguna.") return user_chat = context.bot.get_chat(user_id) if user_chat.type != "private": message.reply_text("Itu bukan pengguna!") return if not gban_db.is_user_gbanned(user_id): message.reply_text("Pengguna ini tidak dilarang!") return banner = update.effective_user message.reply_text( "Saya akan memberi {} kesempatan kedua, secara global.".format( user_chat.first_name)) context.bot.sendMessage( GBAN_LOGS, "<b>Regression of Global Ban</b>" "\n#UNGBAN" "\n<b>Status:</b> <code>Ceased</code>" "\n<b>Sudo Admin:</b> {}" "\n<b>User:</b> {}" "\n<b>ID:</b> <code>{}</code>".format( mention_html(banner.id, banner.first_name), mention_html(user_chat.id, user_chat.first_name), user_chat.id, ), parse_mode=ParseMode.HTML, ) chats = get_all_chats() for chat in chats: chat_id = chat["chat_id"] # Check if this group has disabled gbans if not gban_db.does_chat_gban(chat_id): continue try: member = context.bot.get_chat_member(chat_id, user_id) if member.status == "kicked": context.bot.unban_chat_member(chat_id, user_id) except BadRequest as excp: if excp.message in UNGBAN_ERRORS: pass else: message.reply_text( "Tidak dapat membatalkan gban karena: {}".format( excp.message)) context.bot.send_message( OWNER_ID, "Tidak dapat membatalkan gban karena: {}".format( excp.message), ) return except TelegramError: pass gban_db.ungban_user(user_id) message.reply_text("Tidak di larang lagi.")