Ejemplo n.º 1
0
def gban(bot: Bot, update: Update, args: List[str]):
    message = update.effective_message  # type: Optional[Message]

    user_id, reason = extract_user_and_text(message, args)

    if not user_id:
        message.reply_text("Anda sepertinya tidak mengacu pada pengguna.")
        return

    if int(user_id) in SUDO_USERS:
        message.reply_text(
            "Saya memata-matai, dengan mata kecil saya... perang pengguna sudo! Mengapa kalian saling berpaling? 😱"
        )
        return

    if int(user_id) in SUPPORT_USERS:
        message.reply_text(
            "OOOH seseorang mencoba untuk memblokir secara global pengguna dukungan! 😄 *mengambil popcorn*"
        )
        return

    if user_id == bot.id:
        message.reply_text(
            "😑 Sangat lucu, mari kita blokir secara global diri saya sendiri? Usaha yang bagus 😒"
        )
        return

    try:
        user_chat = 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 sql.is_user_gbanned(user_id):
        if not reason:
            message.reply_text(
                "Pengguna ini sudah dilarang secara global; Saya akan mengubah alasannya, tetapi Anda belum memberi saya satu..."
            )
            return

        old_reason = sql.update_gban_reason(
            user_id, user_chat.username or user_chat.first_name, reason)
        if old_reason:
            message.reply_text(
                "Pengguna ini sudah gbanned, karena alasan berikut:\n"
                "<code>{}</code>\n"
                "Saya telah melakukan dan memperbaruinya dengan alasan baru Anda!"
                .format(html.escape(old_reason)),
                parse_mode=ParseMode.HTML)
        else:
            message.reply_text(
                "Pengguna ini sudah gbanned, tetapi tidak ada alasan yang ditetapkan; Saya telah melakukan dan memperbaruinya!"
            )

        return

    message.reply_text("*Kristal banned telah mengarah* 😉")

    banner = update.effective_user  # type: Optional[User]
    send_to_list(bot,
                 SUDO_USERS + SUPPORT_USERS,
                 "{} melarang secara global pengguna {} "
                 "karena:\n{}".format(
                     mention_html(banner.id, banner.first_name),
                     mention_html(user_chat.id, user_chat.first_name), reason
                     or "Tidak ada alasan yang diberikan"),
                 html=True)

    sql.gban_user(user_id, user_chat.username or user_chat.first_name, reason)

    chats = get_all_chats()
    for chat in chats:
        chat_id = chat.chat_id

        # Check if this group has disabled gbans
        if not sql.does_chat_gban(chat_id):
            continue

        try:
            bot.kick_chat_member(chat_id, user_id)
        except BadRequest as excp:
            if excp.message in GBAN_ERRORS:
                pass
            else:
                message.reply_text(
                    "Tidak dapat melarang secara global karena: {}".format(
                        excp.message))
                send_to_list(
                    bot, SUDO_USERS + SUPPORT_USERS,
                    "Tidak dapat melarang secara global karena: {}".format(
                        excp.message))
                sql.ungban_user(user_id)
                return
        except TelegramError:
            pass

    send_to_list(bot, SUDO_USERS + SUPPORT_USERS,
                 "Melarang secara global selesai!")
    message.reply_text("Orang ini telah dilarang secara global.")
Ejemplo n.º 2
0
def gban(update, context):
    message = update.effective_message  # type: Optional[Message]
    args = context.args

    user_id, reason = extract_user_and_text(message, args)
    if user_id == "error":
        send_message(update.effective_message,
                     tl(update.effective_message, reason))
        return ""

    if not user_id:
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "You don't seem to be referring to a user."))
        return

    if int(user_id) in SUDO_USERS:
        send_message(
            update.effective_message,
            tl(
                update.effective_message,
                "I spy, with my little eye... a sudo user war! Why are you guys turning on each other? 😱"
            ))
        return

    if int(user_id) in SUPPORT_USERS:
        send_message(
            update.effective_message,
            tl(
                update.effective_message,
                "OOOH someone's trying to gban a support User! 😄 *grabs popcorn*"
            ))
        return

    if user_id == context.bot.id:
        send_message(
            update.effective_message,
            tl(update.effective_message,
               "😑 So funny, lets gban myself why don't I? Nice try. 😒"))
        return

    try:
        user_chat = context.bot.get_chat(user_id)
    except BadRequest as excp:
        send_message(update.effective_message, excp.message)
        return

    if user_chat.type != 'private':
        send_message(update.effective_message,
                     tl(update.effective_message, "That's not a user!"))
        return

    if sql.is_user_gbanned(user_id):
        if not reason:
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "This user is already gbanned; I'd change the reason, but you haven't given me one..."
                ))
            return

        old_reason = sql.update_gban_reason(
            user_id, user_chat.username or user_chat.first_name, reason)
        if old_reason:
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "This user is already gbanned, for the following reason:\n"
                    "<code>{}</code>\n"
                    "\nI've gone and updated it with your new reason!").format(
                        html.escape(old_reason)),
                parse_mode=ParseMode.HTML)
        else:
            send_message(
                update.effective_message,
                tl(
                    update.effective_message,
                    "This user is already gbanned, but had no reason set; I've gone and updated it!"
                ))

        return

    send_message(update.effective_message,
                 tl(update.effective_message, "*It's gban time!* 😉"))

    banner = update.effective_user  # type: Optional[User]
    context.bot.send_message(
        MESSAGE_DUMP,
        tl(update.effective_message, "{} is gbanning user {} "
           "because:\n{}").format(
               mention_html(banner.id, banner.first_name),
               mention_html(user_chat.id, user_chat.first_name), reason
               or tl(update.effective_message, "No reason given")),
        parse_mode=ParseMode.HTML)

    sql.gban_user(user_id, user_chat.username or user_chat.first_name, reason)

    chats = get_all_chats()
    for chat in chats:
        chat_id = chat.chat_id

        # Check if this group has disabled gbans
        if not sql.does_chat_gban(chat_id):
            continue

        try:
            context.bot.kick_chat_member(chat_id, user_id)
        except BadRequest as excp:
            if excp.message in GBAN_ERRORS:
                pass
            else:
                send_message(
                    update.effective_message,
                    tl(update.effective_message,
                       "Could not gban due to: {}").format(excp.message))
                context.bot.send_message(
                    MESSAGE_DUMP,
                    tl(update.effective_message,
                       "Could not gban due to: {}").format(excp.message))
                sql.ungban_user(user_id)
                return
        except TelegramError:
            pass

    context.bot.send_message(MESSAGE_DUMP,
                             tl(update.effective_message, "gban complete!"))
    send_message(update.effective_message,
                 tl(update.effective_message, "Person has been gbanned."))