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 addtiger(update: Update, context: CallbackContext) -> str: message = update.effective_message user = update.effective_user chat = update.effective_chat bot, args = context.bot, context.args user_id = extract_user(message, args) user_member = bot.getChat(user_id) rt = "" reply = check_user_id(user_id, bot) if reply: message.reply_text(reply) return "" with open(ELEVATED_USERS_FILE, "r") as infile: data = json.load(infile) if user_id in DRAGONS: rt += "Anggota ini adalah Dragon, Merosot menjadi Tiger." data["sudos"].remove(user_id) DRAGONS.remove(user_id) if user_id in DEMONS: rt += "Pengguna ini sudah menjadi Demon, Merosot ke Tiger." data["supports"].remove(user_id) DEMONS.remove(user_id) if user_id in WOLVES: rt += "Pengguna ini sudah menjadi Wolf, Merosot menjadi Tiger." data["whitelists"].remove(user_id) WOLVES.remove(user_id) if user_id in TIGERS: message.reply_text("Pengguna ini sudah menjadi Tiger.") return "" data["tigers"].append(user_id) TIGERS.append(user_id) with open(ELEVATED_USERS_FILE, "w") as outfile: json.dump(data, outfile, indent=4) update.effective_message.reply_text( rt + f"\nBerhasil dipromosikan {user_member.first_name} menjadi Tiger!") log_message = ( f"#TIGER\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))} \n" f"<b>User:</b> {mention_html(user_member.id, html.escape(user_member.first_name))}" ) if chat.type != "private": log_message = f"<b>{html.escape(chat.title)}:</b>\n" + log_message return log_message
def addsupport( update: Update, context: CallbackContext, ) -> str: message = update.effective_message user = update.effective_user chat = update.effective_chat bot, args = context.bot, context.args user_id = extract_user(message, args) user_member = bot.getChat(user_id) rt = "" reply = check_user_id(user_id, bot) if reply: message.reply_text(reply) return "" with open(ELEVATED_USERS_FILE, "r") as infile: data = json.load(infile) if user_id in DRAGONS: rt += "Meminta HA untuk menurunkan Dragon ini menjadi Demon" data["sudos"].remove(user_id) DRAGONS.remove(user_id) if user_id in DEMONS: message.reply_text("Pengguna ini sudah menjadi Demon Disaster.") return "" if user_id in WOLVES: rt += "Meminta HA untuk mempromosikan Bencana Wolf ini ke Demon." data["whitelists"].remove(user_id) WOLVES.remove(user_id) data["supports"].append(user_id) DEMONS.append(user_id) with open(ELEVATED_USERS_FILE, "w") as outfile: json.dump(data, outfile, indent=4) update.effective_message.reply_text( rt + f"\n{user_member.first_name} ditambahkan sebagai Demon Disaster!") log_message = ( f"#SUPPORT\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))}\n" f"<b>User:</b> {mention_html(user_member.id, html.escape(user_member.first_name))}" ) if chat.type != "private": log_message = f"<b>{html.escape(chat.title)}:</b>\n" + log_message return log_message
def addsudo(update: Update, context: CallbackContext) -> str: message = update.effective_message user = update.effective_user chat = update.effective_chat bot, args = context.bot, context.args user_id = extract_user(message, args) user_member = bot.getChat(user_id) rt = "" reply = check_user_id(user_id, bot) if reply: message.reply_text(reply) return "" with open(ELEVATED_USERS_FILE, "r") as infile: data = json.load(infile) if user_id in DRAGONS: message.reply_text("Anggota ini sudah menjadi Bencana Dragon") return "" if user_id in DEMONS: rt += "Meminta HA untuk mempromosikan Bencana Demon ke Dragon." data["supports"].remove(user_id) DEMONS.remove(user_id) if user_id in WOLVES: rt += "Meminta HA untuk mempromosikan Bencana Wolf ke Dragon." data["whitelists"].remove(user_id) WOLVES.remove(user_id) data["sudos"].append(user_id) DRAGONS.append(user_id) with open(ELEVATED_USERS_FILE, "w") as outfile: json.dump(data, outfile, indent=4) update.effective_message.reply_text( rt + "\nBerhasil menyetel tingkat Bencana {} ke Dragon!".format( user_member.first_name)) log_message = ( f"#SUDO\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))}\n" f"<b>User:</b> {mention_html(user_member.id, html.escape(user_member.first_name))}" ) if chat.type != "private": log_message = f"<b>{html.escape(chat.title)}:</b>\n" + log_message 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 removesudo(update: Update, context: CallbackContext) -> str: message = update.effective_message user = update.effective_user chat = update.effective_chat bot, args = context.bot, context.args user_id = extract_user(message, args) user_member = bot.getChat(user_id) reply = check_user_id(user_id, bot) if reply: message.reply_text(reply) return "" with open(ELEVATED_USERS_FILE, "r") as infile: data = json.load(infile) if user_id in DRAGONS: message.reply_text( "HA meminta untuk menurunkan pengguna ini menjadi Civilian") DRAGONS.remove(user_id) data["sudos"].remove(user_id) with open(ELEVATED_USERS_FILE, "w") as outfile: json.dump(data, outfile, indent=4) log_message = ( f"#UNSUDO\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))}\n" f"<b>User:</b> {mention_html(user_member.id, html.escape(user_member.first_name))}" ) if chat.type != "private": log_message = "<b>{}:</b>\n".format(html.escape( chat.title)) + log_message return log_message else: message.reply_text("Pengguna ini bukan Dragon!") return ""
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 unbl_user(update: Update, context: CallbackContext) -> str: message = update.effective_message user = update.effective_user bot, args = context.bot, context.args user_id = extract_user(message, args) if not user_id: message.reply_text("Saya ragu itu adalah pengguna.") return "" if user_id == bot.id: message.reply_text("Saya selalu memperhatikan diri saya sendiri.") return "" try: target_user = bot.get_chat(user_id) except BadRequest as excp: if excp.message == "Pengguna tidak ditemukan": message.reply_text("Saya tidak dapat menemukan pengguna ini.") return "" else: raise if sql.is_user_blacklisted(user_id): sql.unblacklist_user(user_id) message.reply_text("*memperhatikan pengguna*") log_message = ( f"#UNBLACKLIST\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))}\n" f"<b>User:</b> {mention_html(target_user.id, html.escape(target_user.first_name))}" ) return log_message else: message.reply_text("Saya tidak mengabaikan mereka sama sekali!") return ""
def removetiger(update: Update, context: CallbackContext) -> str: message = update.effective_message user = update.effective_user chat = update.effective_chat bot, args = context.bot, context.args user_id = extract_user(message, args) user_member = bot.getChat(user_id) reply = check_user_id(user_id, bot) if reply: message.reply_text(reply) return "" with open(ELEVATED_USERS_FILE, "r") as infile: data = json.load(infile) if user_id in TIGERS: message.reply_text("Mendemosikan menjadi pengguna biasa") TIGERS.remove(user_id) data["tigers"].remove(user_id) with open(ELEVATED_USERS_FILE, "w") as outfile: json.dump(data, outfile, indent=4) log_message = ( f"#UNTIGER\n" f"<b>Admin:</b> {mention_html(user.id, html.escape(user.first_name))}\n" f"<b>User:</b> {mention_html(user_member.id, html.escape(user_member.first_name))}" ) if chat.type != "private": log_message = f"<b>{html.escape(chat.title)}:</b>\n" + log_message return log_message else: message.reply_text("Pengguna ini bukan Tiger!") return ""
def promote(update: Update, context: CallbackContext) -> str: bot = context.bot args = context.args message = update.effective_message chat = update.effective_chat user = update.effective_user promoter = chat.get_member(user.id) if (not (promoter.can_promote_members or promoter.status == "creator") and user.id not in DRAGONS): message.reply_text( "Anda tidak memiliki hak yang diperlukan untuk melakukan itu!") return user_id = extract_user(message, args) if not user_id: message.reply_text( "Anda sepertinya tidak merujuk ke pengguna atau ID yang ditentukan salah.." ) return try: user_member = chat.get_member(user_id) except: return if user_member.status == "administrator" or user_member.status == "creator": message.reply_text( "Bagaimana saya dimaksudkan untuk mempromosikan seseorang yang sudah menjadi admin?" ) return if user_id == bot.id: message.reply_text( "Saya tidak dapat mempromosikan diri saya sendiri! Dapatkan admin untuk melakukannya untuk saya." ) return # atur perm yang sama dengan bot - bot tidak bisa menetapkan perm yang lebih tinggi dari itu sendiri!! bot_member = chat.get_member(bot.id) try: bot.promoteChatMember( chat.id, user_id, can_change_info=bot_member.can_change_info, can_post_messages=bot_member.can_post_messages, can_edit_messages=bot_member.can_edit_messages, can_delete_messages=bot_member.can_delete_messages, can_invite_users=bot_member.can_invite_users, can_restrict_members=bot_member.can_restrict_members, can_pin_messages=bot_member.can_pin_messages, ) except BadRequest as err: if err.message == "User_not_mutual_contact": message.reply_text( "Saya tidak dapat mempromosikan seseorang yang tidak ada di grup." ) else: message.reply_text("Terjadi kesalahan saat mempromosikan.") return bot.sendMessage( chat.id, f"Berhasil dipromosikan <b>{user_member.user.first_name or user_id}</b>!", parse_mode=ParseMode.HTML, ) log_message = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#PROMOTED\n" f"<b>Admin:</b> {mention_html(user.id, user.first_name)}\n" f"<b>User:</b> {mention_html(user_member.user.id, user_member.user.first_name)}" ) return log_message
def demote(update: Update, context: CallbackContext) -> str: bot = context.bot args = context.args chat = update.effective_chat message = update.effective_message user = update.effective_user user_id = extract_user(message, args) if not user_id: message.reply_text( "Anda sepertinya tidak merujuk ke pengguna atau ID yang ditentukan salah..." ) return try: user_member = chat.get_member(user_id) except: return if user_member.status == "creator": message.reply_text( "Baka!!, Orang ini MENCIPTAKAN obrolan, bagaimana cara saya menurunkannya?" ) return if not user_member.status == "administrator": message.reply_text( "Tidak dapat menurunkan apa yang tidak dipromosikan!") return if user_id == bot.id: message.reply_text( "Saya tidak bisa menurunkan diri saya sendiri! Dapatkan admin untuk melakukannya untuk saya." ) return try: bot.promoteChatMember( chat.id, user_id, can_change_info=False, can_post_messages=False, can_edit_messages=False, can_delete_messages=False, can_invite_users=False, can_restrict_members=False, can_pin_messages=False, can_promote_members=False, ) bot.sendMessage( chat.id, f"Berhasil diturunkan <b>{user_member.user.first_name or user_id}</b>!", parse_mode=ParseMode.HTML, ) log_message = ( f"<b>{html.escape(chat.title)}:</b>\n" f"#DEMOTED\n" f"<b>Admin:</b> {mention_html(user.id, user.first_name)}\n" f"<b>User:</b> {mention_html(user_member.user.id, user_member.user.first_name)}" ) return log_message except BadRequest: message.reply_text( "Tidak bisa menurunkan. Saya mungkin bukan admin, atau status admin diangkat oleh orang lain" " pengguna, jadi saya tidak bisa menindaklanjutinya!") return