def gbanstat(update, context): args = context.args if len(args) > 0: if args[0].lower() in ["on", "yes"]: gban_db.enable_gbans(update.effective_chat.id) update.effective_message.reply_text( "Saya telah mengaktifkan Spam Shield di grup ini. Ini akan membantu melindungi Anda " "dari spammer, karakter yang tidak menyenangkan, dan troll terbesar." ) elif args[0].lower() in ["off", "no"]: gban_db.disable_gbans(update.effective_chat.id) update.effective_message.reply_text( "Saya telah menonaktifkan perisai Spam di grup ini. SpamShield tidak akan mempengaruhi pengguna Anda " "lagi. Anda akan kurang terlindungi dari troll dan spammer " "bagaimanapun juga!") else: update.effective_message.reply_text( "Beri saya beberapa argumen untuk memilih pengaturan! on/off, yes/no!\n\n" "Pengaturan Anda saat ini adalah: {}\n" "Jika Benar, Semua Perisai Spam yang terjadi juga akan terjadi di grup Anda. " "Ketika Salah, mereka tidak akan melakukannya, meninggalkan Anda dengan kemungkinan belas kasihan " "oleh spammers.".format( gban_db.does_chat_gban(update.effective_chat.id)))
def enforce_gban(update, context): # Not using @restrict handler to avoid spamming - just ignore if cant gban. try: if (gban_db.does_chat_gban(update.effective_chat.id) and update.effective_chat.get_member( context.bot.id).can_restrict_members): user = update.effective_user chat = update.effective_chat msg = update.effective_message if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id) if msg.new_chat_members: new_members = update.effective_message.new_chat_members for mem in new_members: check_and_ban(update, mem.id) if msg.reply_to_message: user = msg.reply_to_message.from_user if user and not is_user_admin(chat, user.id): check_and_ban(update, user.id, should_message=False) except (Unauthorized, BadRequest): pass
def __chat_settings__(chat_id, user_id): return "Obrolan ini berlaku *gbans*: `{}`.".format( gban_db.does_chat_gban(chat_id))
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.")