def disapprove(update, context): message = update.effective_message chat_title = message.chat.title chat = update.effective_chat args = context.args user = update.effective_user user_id = extract_user(message, args) if not user_id: message.reply_text( "Saya tidak tahu siapa yang Anda bicarakan, Anda harus menentukan pengguna! " ) return "" try: member = chat.get_member(user_id) except BadRequest: return "" if member.status == "administrator" or member.status == "creator": message.reply_text( "Pengguna ini adalah admin, persetujuan mereka tidak dapat dibatalkan." ) return "" if not sql.is_approved(message.chat_id, user_id): message.reply_text(f"{member.user['first_name']} belum disetujui!") return "" sql.disapprove(message.chat_id, user_id) message.reply_text( f"{member.user['first_name']} tidak lagi disetujui di {chat_title}.") log_message = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#UNAPPROVED\n" f"<b>Admin:</b> {mention_html(user.id, user.first_name)}\n" f"<b>User:</b> {mention_html(member.user.id, member.user.first_name)}") return log_message
def approval(update, context): message = update.effective_message chat = update.effective_chat args = context.args user_id = extract_user(message, args) member = chat.get_member(int(user_id)) if not user_id: message.reply_text( "Saya tidak tahu siapa yang Anda bicarakan, Anda harus menentukan pengguna! " ) return "" if sql.is_approved(message.chat_id, user_id): message.reply_text( f"{member.user['first_name']} adalah pengguna yang disetujui. Kunci, antiflood, dan daftar blokir tidak akan berlaku untuk mereka. " ) else: message.reply_text( f"{member.user['first_name']} bukan pengguna yang disetujui. Mereka dipengaruhi oleh perintah normal. " )
def approve(update, context): message = update.effective_message chat_title = message.chat.title chat = update.effective_chat args = context.args user = update.effective_user user_id = extract_user(message, args) if not user_id: message.reply_text( "Saya tidak tahu siapa yang Anda bicarakan, Anda harus menentukan pengguna!" ) return "" try: member = chat.get_member(user_id) except BadRequest: return "" if member.status == "administrator" or member.status == "creator": message.reply_text( "Pengguna sudah menjadi admin - kunci, daftar blokir, dan antiflood sudah tidak berlaku untuk mereka." ) return "" if sql.is_approved(message.chat_id, user_id): message.reply_text( f"[{member.user['first_name']}](tg://user?id={member.user['id']}) is already approved in {chat_title}", parse_mode=ParseMode.MARKDOWN, ) return "" sql.approve(message.chat_id, user_id) message.reply_text( f"[{member.user['first_name']}](tg://user?id={member.user['id']}) telah disetujui di {chat_title}! Mereka sekarang akan diabaikan oleh tindakan admin otomatis seperti kunci, daftar blokir, dan antiflood.", parse_mode=ParseMode.MARKDOWN, ) log_message = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#APPROVED\n" f"<b>Admin:</b> {mention_html(user.id, user.first_name)}\n" f"<b>User:</b> {mention_html(member.user.id, member.user.first_name)}") return log_message
def check_flood(update, context) -> str: user = update.effective_user chat = update.effective_chat msg = update.effective_message if not user: # mengabaikan channels return "" # abaikan admin dan daftar putih if is_user_admin(chat, user.id) or user.id in WOLVES or user.id in TIGERS: sql.update_flood(chat.id, None) return "" # abaikan pengguna yang disetujui if is_approved(chat.id, user.id): sql.update_flood(chat.id, None) return should_ban = sql.update_flood(chat.id, user.id) if not should_ban: return "" try: getmode, getvalue = sql.get_flood_setting(chat.id) if getmode == 1: chat.kick_member(user.id) execstrings = "Banned" tag = "BANNED" elif getmode == 2: chat.kick_member(user.id) chat.unban_member(user.id) execstrings = "Kicked" tag = "KICKED" elif getmode == 3: context.bot.restrict_chat_member( chat.id, user.id, permissions=ChatPermissions(can_send_messages=False)) execstrings = "Muted" tag = "MUTED" elif getmode == 4: bantime = extract_time(msg, getvalue) chat.kick_member(user.id, until_date=bantime) execstrings = "Banned for {}".format(getvalue) tag = "TBAN" elif getmode == 5: mutetime = extract_time(msg, getvalue) context.bot.restrict_chat_member( chat.id, user.id, until_date=mutetime, permissions=ChatPermissions(can_send_messages=False), ) execstrings = "Muted for {}".format(getvalue) tag = "TMUTE" send_message(update.effective_message, "Beep Boop! Beep Boop!\n{}!".format(execstrings)) return ("<b>{}:</b>" "\n#{}" "\n<b>User:</b> {}" "\nMembanjiri grup.".format( tag, html.escape(chat.title), mention_html(user.id, html.escape(user.first_name)), )) except BadRequest: msg.reply_text( "Saya tidak bisa membatasi orang di sini, beri saya izin dulu! Sampai saat itu, saya akan menonaktifkan anti-flood." ) sql.set_flood(chat.id, 0) return ( "<b>{}:</b>" "\n#INFO" "\nTidak memiliki cukup izin untuk membatasi pengguna jadi otomatis dinonaktifkan anti-flood" .format(chat.title))
def del_blacklist(update, context): chat = update.effective_chat message = update.effective_message user = update.effective_user bot = context.bot to_match = extract_text(message) if not to_match: return if is_approved(chat.id, user.id): return getmode, value = sql.get_blacklist_setting(chat.id) chat_filters = sql.get_chat_blacklist(chat.id) for trigger in chat_filters: pattern = r"( |^|[^\w])" + re.escape(trigger) + r"( |$|[^\w])" if re.search(pattern, to_match, flags=re.IGNORECASE): try: if getmode == 0: return elif getmode == 1: try: message.delete() except BadRequest: pass elif getmode == 2: try: message.delete() except BadRequest: pass warn( update.effective_user, chat, ("Menggunakan pemicu daftar hitam: {}".format(trigger)), message, update.effective_user, ) return elif getmode == 3: message.delete() bot.restrict_chat_member( chat.id, update.effective_user.id, permissions=ChatPermissions(can_send_messages=False), ) bot.sendMessage( chat.id, f"Muted {user.first_name} untuk menggunakan kata dalam Daftar Hitam: {trigger}!", ) return elif getmode == 4: message.delete() res = chat.unban_member(update.effective_user.id) if res: bot.sendMessage( chat.id, f"Kicked {user.first_name} untuk menggunakan kata dalam Daftar Hitam: {trigger}!", ) return elif getmode == 5: message.delete() chat.kick_member(user.id) bot.sendMessage( chat.id, f"Banned {user.first_name} untuk menggunakan kata dalam Daftar Hitam: {trigger}", ) return elif getmode == 6: message.delete() bantime = extract_time(message, value) chat.kick_member(user.id, until_date=bantime) bot.sendMessage( chat.id, f"Banned {user.first_name} sampai '{value}' untuk menggunakan kata dalam Daftar Hitam: {trigger}!", ) return elif getmode == 7: message.delete() mutetime = extract_time(message, value) bot.restrict_chat_member( chat.id, user.id, until_date=mutetime, permissions=ChatPermissions(can_send_messages=False), ) bot.sendMessage( chat.id, f"Muted {user.first_name} sampai '{value}' untuk menggunakan kata dalam Daftar Hitam: {trigger}!", ) return except BadRequest as excp: if excp.message != "Pesan untuk dihapus tidak ditemukan": LOGGER.exception("Kesalahan saat menghapus pesan daftar hitam.") break