def get_invalid_gban(update: Update, context: CallbackContext, remove: bool = False): bot = context.bot banned = gban_sql.get_gban_list() ungbanned_users = 0 ungban_list = [] for user in banned: user_id = user["user_id"] sleep(0.1) try: bot.get_chat(user_id) except BadRequest: ungbanned_users += 1 ungban_list.append(user_id) except: pass if not remove: return ungbanned_users else: for user_id in ungban_list: sleep(0.1) gban_sql.ungban_user(user_id) return ungbanned_users
def gbanlist(update: Update, context: CallbackContext): banned_users = sql.get_gban_list() if not banned_users: update.effective_message.reply_text( "There aren't any gbanned users! You're kinder than I expected...") return banfile = 'Screw these guys.\n' for user in banned_users: banfile += f"[x] {user['name']} - {user['user_id']}\n" if user["reason"]: banfile += f"Reason: {user['reason']}\n" with BytesIO(str.encode(banfile)) as output: output.name = "gbanlist.txt" update.effective_message.reply_document( document=output, filename="gbanlist.txt", caption="Here is the list of currently gbanned users.") if sql.is_user_gbanned(user_id): update.effective_chat.kick_member(user_id) if should_message: text = f"<b>Alert</b>: this user is globally banned.\n" \ f"<code>*bans them from here*</code>.\n" \ f"<b>Appeal chat</b>: {SUPPORT_CHAT}\n" \ f"<b>User ID</b>: <code>{user_id}</code>" user = sql.get_gbanned_user(user_id) if user.reason: text += f"\n<b>Ban Reason:</b> <code>{html.escape(user.reason)}</code>" update.effective_message.reply_text(text, parse_mode=ParseMode.HTML)
def gbanlist(update: Update, context:CallbackContext): banned_users = sql.get_gban_list() if not banned_users: update.effective_message.reply_text("There aren't any gbanned users! You're kinder than I expected...") return banfile = 'Screw these guys.\n' for user in banned_users: banfile += "[x] {} - {}\n".format(user["name"], user["user_id"]) if user["reason"]: banfile += "Reason: {}\n".format(user["reason"]) with BytesIO(str.encode(banfile)) as output: output.name = "gbanlist.txt" update.effective_message.reply_document(document=output, filename="gbanlist.txt", caption="Here is the list of currently gbanned users.")
def clear_gbans(update: Update, context:CallbackContext): '''Check and remove deleted accounts from gbanlist. By @TheRealPhoenix''' bot, args = context.bot, context.args banned = sql.get_gban_list() deleted = 0 for user in banned: id = user["user_id"] time.sleep(0.1) # Reduce floodwait try: acc = bot.get_chat(id) if not acc.first_name: deleted += 1 sql.ungban_user(id) except BadRequest: deleted += 1 sql.ungban_user(id) update.message.reply_text("Done! `{}` deleted accounts were removed " \ "from the gbanlist.".format(deleted), parse_mode=ParseMode.MARKDOWN)
def check_gbans(update: Update, context:CallbackContext): '''By @TheRealPhoenix''' bot, args = context.bot, context.args banned = sql.get_gban_list() deleted = 0 for user in banned: id = user["user_id"] time.sleep(0.1) # Reduce floodwait try: acc = bot.get_chat(id) if not acc.first_name: deleted += 1 except BadRequest: deleted += 1 if deleted: update.message.reply_text("`{}` deleted accounts found in the gbanlist! " \ "Run /cleangb to remove them from the database!".format(deleted), parse_mode=ParseMode.MARKDOWN) else: update.message.reply_text("No deleted accounts in the gbanlist!")