def set_title(update, context): args = context.args chat = update.effective_chat message = update.effective_message user_id, title = extract_user_and_text(message, args) try: user_member = chat.get_member(user_id) except Exception: return if not user_id: message.reply_text("Anda sepertinya tidak mengacu pada pengguna.") return if user_member.status == "creator": message.reply_text( "Orang ini MENCIPTAKAN obrolan, bagaimana saya bisa mengatur title khusus untuknya?" ) return if not user_member.status == "administrator": message.reply_text( "Tidak dapat menyetel title untuk non-admin!\nPromosikan mereka terlebih dahulu untuk menyetel title kustom!" ) return if user_id == context.bot.id: message.reply_text( "Saya tidak dapat menetapkan title saya sendiri! Dapatkan orang yang menjadikan saya admin untuk melakukannya untuk saya." ) return if not title: message.reply_text("Menyetel title kosong tidak akan menghasilkan apa-apa!") return if len(title) > 16: message.reply_text( "Panjang title lebih dari 16 karakter.\nMemotongnya menjadi 16 karakter." ) try: context.bot.set_chat_administrator_custom_title( chat.id, user_id, title ) message.reply_text( "Berhasil menetapkan title untuk <b>{}</b> ke <code>{}</code>!".format( user_member.user.first_name or user_id, title[:16] ), parse_mode=ParseMode.HTML, ) except BadRequest: message.reply_text( "Saya tidak dapat menyetel title khusus untuk admin yang tidak saya promosikan!" )
def unban(update, context): message = update.effective_message user = update.effective_user chat = update.effective_chat args = context.args if user_can_ban(chat, user, context.bot.id) is False: message.reply_text( "Anda tidak memiliki cukup hak untuk membatalkan pelarangan orang di sini!" ) return "" user_id, reason = extract_user_and_text(message, args) if not user_id: return "" try: member = chat.get_member(user_id) except BadRequest as excp: if excp.message == "User not found": message.reply_text( "Sepertinya saya tidak dapat menemukan pengguna ini") return "" else: raise if user_id == context.bot.id: message.reply_text( "Bagaimana saya akan membatalkan pelarangan diri saya sendiri jika saya tidak ada di sini...?" ) return "" if is_user_in_chat(chat, user_id): message.reply_text( "Mengapa Anda mencoba membatalkan pelarangan seseorang yang sudah ada di obrolan ini?" ) return "" chat.unban_member(user_id) message.reply_text("Selesai, mereka bisa bergabung lagi!") log = ("<b>{}:</b>" "\n#UNBANNED" "\n<b>Admin:</b> {}" "\n<b>User:</b> {} (<code>{}</code>)".format( html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(member.user.id, member.user.first_name), member.user.id, )) if reason: log += "\n<b>Reason:</b> {}".format(reason) return log
def warn_user(update, context): message = update.effective_message chat = update.effective_chat warner = update.effective_user args = context.args user_id, reason = extract_user_and_text(message, args) if user_id: if (message.reply_to_message and message.reply_to_message.from_user.id == user_id): return warn( message.reply_to_message.from_user, chat, reason, message.reply_to_message, warner, ) else: return warn( chat.get_member(user_id).user, chat, reason, message, warner) else: message.reply_text("Tidak ada pengguna yang ditunjuk!") return ""
def ban(update, context): chat = update.effective_chat user = update.effective_user message = update.effective_message args = context.args if user_can_ban(chat, user, context.bot.id) is False: message.reply_text( "Anda tidak memiliki cukup hak untuk melarang pengguna!") return "" user_id, reason = extract_user_and_text(message, args) if not user_id: message.reply_text( "Setidaknya merujuk beberapa pengguna untuk melarang!") return "" try: member = chat.get_member(user_id) except BadRequest as excp: if excp.message == "User not found": message.reply_text( "Saya tampaknya tidak dapat menemukan pengguna ini") return "" else: raise if is_user_ban_protected(chat, user_id, member): message.reply_text( "Saya tidak akan melarang admin, jangan mengejek diri sendiri!") return "" if user_id == context.bot.id: message.reply_text( "Saya tidak akan melarang diri saya sendiri, apakah Anda gila atau tidak?" ) return "" log = ("<b>{}:</b>" "\n#BANNED" "\n<b>Admin:</b> {}" "\n<b>User:</b> {} (<code>{}</code>)".format( html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(member.user.id, member.user.first_name), member.user.id, )) if reason: log += "\n<b>Reason:</b> {}".format(reason) try: chat.kick_member(user_id) # context.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie # sticker context.bot.sendMessage( chat.id, "biarkan {} berjalan di papan.".format( mention_html(member.user.id, member.user.first_name)), parse_mode=ParseMode.HTML, ) return log except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text("Banned!", quote=False) return log else: LOGGER.warning(update) LOGGER.exception( "ERROR banning user %s in chat %s (%s) due to %s", user_id, chat.title, chat.id, excp.message, ) message.reply_text("Sial, saya tidak bisa mencekal pengguna itu.") return ""
def kick(update, context): chat = update.effective_chat user = update.effective_user message = update.effective_message args = context.args if user_can_ban(chat, user, context.bot.id) is False: message.reply_text( "Anda tidak memiliki cukup hak untuk menendang pengguna!") return "" user_id, reason = extract_user_and_text(message, args) if not user_id: return "" try: member = chat.get_member(user_id) except BadRequest as excp: if excp.message == "User not found": message.reply_text( "Sepertinya saya tidak dapat menemukan pengguna ini") return "" else: raise if is_user_ban_protected(chat, user_id): message.reply_text("Yeahh ... mari kita mulai menendang admin?") return "" if user_id == context.bot.id: message.reply_text("Yah aku tidak akan melakukan itu") return "" res = chat.unban_member(user_id) # unban on current user = kick if res: # context.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie # sticker context.bot.sendMessage( chat.id, "Sampai kita bertemu lagi {}.".format( mention_html(member.user.id, member.user.first_name)), parse_mode=ParseMode.HTML, ) log = ("<b>{}:</b>" "\n#KICKED" "\n<b>Admin:</b> {}" "\n<b>User:</b> {} (<code>{}</code>)".format( html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(member.user.id, member.user.first_name), member.user.id, )) if reason: log += "\n<b>Reason:</b> {}".format(reason) return log else: message.reply_text("Get Out!.") return ""
def temp_ban(update, context): chat = update.effective_chat user = update.effective_user message = update.effective_message args = context.args if user_can_ban(chat, user, context.bot.id) is False: message.reply_text( "Anda tidak memiliki cukup hak untuk memblokir seseorang untuk sementara!" ) return "" user_id, reason = extract_user_and_text(message, args) if not user_id: message.reply_text( "Hai kawan! setidaknya rujuk beberapa pengguna untuk dicekal...") return "" try: member = chat.get_member(user_id) except BadRequest as excp: if excp.message == "User not found": message.reply_text( "Sepertinya saya tidak dapat menemukan pengguna ini") return "" else: raise if is_user_ban_protected(chat, user_id, member): message.reply_text("Wow! mari kita mulai memblokir Admin sendiri?...") return "" if user_id == context.bot.id: message.reply_text( "Saya tidak akan melarang diri saya sendiri, apakah Anda gila atau tidak?" ) return "" if not reason: message.reply_text( "Anda belum menentukan waktu untuk mencekal pengguna ini!") return "" split_reason = reason.split(None, 1) time_val = split_reason[0].lower() if len(split_reason) > 1: reason = split_reason[1] else: reason = "" bantime = extract_time(message, time_val) if not bantime: return "" log = ("<b>{}:</b>" "\n#TEMP BANNED" "\n<b>Admin:</b> {}" "\n<b>User:</b> {} (<code>{}</code>)" "\n<b>Time:</b> {}".format( html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(member.user.id, member.user.first_name), member.user.id, time_val, )) if reason: log += "\n<b>Reason:</b> {}".format(reason) try: chat.kick_member(user_id, until_date=bantime) # context.bot.send_sticker(chat.id, BAN_STICKER) # banhammer marie # sticker message.reply_text( "Dilarang! Pengguna akan diblokir {}.".format(time_val)) return log except BadRequest as excp: if excp.message == "Pesan balasan tidak ditemukan": # Do not reply message.reply_text( "Selamat tinggal .. kita akan bertemu setelah {}.".format( time_val), quote=False) return log else: LOGGER.warning(update) LOGGER.exception( "ERROR banning user %s in chat %s (%s) due to %s", user_id, chat.title, chat.id, excp.message, ) message.reply_text("Sial, saya tidak bisa mencekal pengguna itu.") return ""
def gban(update, context): message = update.effective_message chat = update.effective_chat args = context.args user_id, reason = extract_user_and_text(message, args) if not user_id: message.reply_text("Anda sepertinya tidak mengacu pada pengguna.") return if user_id == OWNER_ID: message.reply_text( "Usaha yang bagus -_- tapi aku tidak akan pernah memberinya.") return if int(user_id) in DEV_USERS: message.reply_text( "Whatt ... Bagaimana saya bisa gban seseorang yang merawat saya +_+" ) return if int(user_id) in SUDO_USERS: message.reply_text( "Saya memata-matai, dengan mata kecil saya ... perang pengguna sudo! Mengapa kalian saling menyerang?" ) return if int(user_id) in SUPPORT_USERS: message.reply_text( "OOOH seseorang mencoba memberi dukungan kepada pengguna! *meraih popcorn*" ) return if user_id in (777000, 1087968824): message.reply_text( "Bagaimana saya bisa melarang seseorang yang saya tidak tahu siapa itu." ) return if user_id == context.bot.id: message.reply_text( "-_- Lucu sekali, ayo gban sendiri kenapa tidak? Usaha yang bagus." ) return if not reason: message.reply_text( "Harap sebutkan alasannya. Saya tidak akan mengizinkan gban :)") return try: user_chat = context.bot.get_chat(user_id) except BadRequest as excp: message.reply_text(excp.message) return if user_chat.type != "private": message.reply_text("Itu bukan pengguna!") return if user_chat.first_name == "": message.reply_text( "Ini adalah akun yang telah dihapus! tidak ada gunanya memberi mereka..." ) return if gban_db.is_user_gbanned(user_id): if not reason: message.reply_text( "Pengguna ini sudah diblokir; Saya akan mengubah alasannya, tetapi Anda belum memberi saya satu pun..." ) return old_reason = gban_db.update_gban_reason( user_id, user_chat.username or user_chat.first_name, reason) user_id, new_reason = extract_user_and_text(message, args) if old_reason: banner = update.effective_user bannerid = banner.id bannername = banner.first_name new_reason = f"{new_reason} // GBanned oleh {bannername} banner id: {bannerid}" context.bot.sendMessage( GBAN_LOGS, "<b>Global Ban Reason Update</b>" "\n<b>Sudo Admin:</b> {}" "\n<b>User:</b> {}" "\n<b>ID:</b> <code>{}</code>" "\n<b>Previous Reason:</b> {}" "\n<b>New Reason:</b> {}".format( mention_html(banner.id, banner.first_name), mention_html(user_chat.id, user_chat.first_name or "Deleted Account"), user_chat.id, old_reason, new_reason, ), parse_mode=ParseMode.HTML, ) message.reply_text( "Pengguna ini sudah diblokir, karena alasan berikut:\n" "<code>{}</code>\n" "Saya telah pergi dan memperbaruinya dengan alasan baru Anda!". format(html.escape(old_reason)), parse_mode=ParseMode.HTML, ) else: message.reply_text( "Pengguna ini sudah diblokir, tetapi tidak ada alasan yang ditetapkan; Saya telah pergi dan memperbaruinya!" ) return message.reply_text( f"<b>Pelarangan Global untuk</b> {mention_html(user_chat.id, user_chat.first_name)}" f"\n<b>ID Pengguna</b>: <code>{user_chat.id}</code>" f"\n<b>Alasan</b>: <code>{reason or 'Tidak ada alasan yang diberikan'}</code>", parse_mode=ParseMode.HTML, ) banner = update.effective_user bannerid = banner.id bannername = banner.first_name reason = f"{reason} // GBanned oleh {bannername} banner id: {bannerid}" context.bot.sendMessage( GBAN_LOGS, "<b>New Global Ban</b>" "\n#GBAN" "\n<b>Status:</b> <code>Enforcing</code>" "\n<b>Sudo Admin:</b> {}" "\n<b>User:</b> {}" "\n<b>ID:</b> <code>{}</code>" "\n<b>Reason:</b> {}".format( mention_html(banner.id, banner.first_name), mention_html(user_chat.id, user_chat.first_name), user_chat.id, reason or "No reason given", ), parse_mode=ParseMode.HTML, ) try: context.bot.kick_chat_member(chat.id, user_chat.id) except BadRequest as excp: if excp.message in GBAN_ERRORS: pass gban_db.gban_user(user_id, user_chat.username or user_chat.first_name, reason)
def temp_mute(update, context): chat = update.effective_chat # type: Optional[Chat] user = update.effective_user # type: Optional[User] message = update.effective_message # type: Optional[Message] args = context.args if user_can_ban(chat, user, context.bot.id) == False: message.reply_text( "Anda tidak memiliki cukup hak untuk membatasi seseorang agar tidak berbicara!" ) return "" user_id, reason = extract_user_and_text(message, args) if not user_id: message.reply_text("Anda sepertinya tidak mengacu pada pengguna.") return "" try: member = chat.get_member(user_id) except BadRequest as excp: if excp.message == "User not found": message.reply_text( "Sepertinya saya tidak dapat menemukan pengguna ini") return "" else: raise if is_user_admin(chat, user_id, member): message.reply_text( "Saya benar-benar berharap dapat menonaktifkan admin...") return "" if user_id == context.bot.id: message.reply_text( "Saya tidak akan BISUKAN diri saya sendiri, apakah Anda sudah gila?" ) return "" if not reason: message.reply_text( "Anda belum menentukan waktu untuk menonaktifkan pengguna ini!") return "" split_reason = reason.split(None, 1) time_val = split_reason[0].lower() if len(split_reason) > 1: reason = split_reason[1] else: reason = "" mutetime = extract_time(message, time_val) if not mutetime: return "" log = ("<b>{}:</b>" "\n#TEMP MUTED" "\n<b>Admin:</b> {}" "\n<b>User:</b> {}" "\n<b>Time:</b> {}".format( html.escape(chat.title), mention_html(user.id, user.first_name), mention_html(member.user.id, member.user.first_name), time_val, )) if reason: log += "\n<b>Alasan:</b> {}".format(reason) try: if member.can_send_messages is None or member.can_send_messages: context.bot.restrict_chat_member( chat.id, user_id, until_date=mutetime, permissions=ChatPermissions(can_send_messages=False), ) message.reply_text("diam! 🤐 Dibisukan untuk {}!".format(time_val)) return log else: message.reply_text("Pengguna ini telah dibungkam.") except BadRequest as excp: if excp.message == "Reply message not found": # Do not reply message.reply_text("diam! 🤐 Dibisukan untuk {}!".format(time_val), quote=False) return log else: LOGGER.warning(update) LOGGER.exception( "ERROR muting user %s in chat %s (%s) due to %s", user_id, chat.title, chat.id, excp.message, ) message.reply_text( "Sial, saya tidak bisa menonaktifkan pengguna itu.") return ""