def check_and_ban(update, user_id, should_message=True):
    if sql.is_user_gbanned(user_id):
        update.effective_chat.kick_member(user_id)
        if should_message:
            update.effective_message.reply_text(
                tl(update.effective_message,
                   "Ini orang jahat, mereka seharusnya tidak ada di sini!"))
Exemple #2
0
def check_and_ban(update, user_id, should_message=True):
    if sql.is_user_gbanned(user_id):
        update.effective_chat.kick_member(user_id)
        if should_message:
            send_message(
                update.effective_message,
                tl(update.effective_message,
                   "This is a bad person, they shouldn't be here!"))
Exemple #3
0
def ungban(update, context):
    message = update.effective_message  # type: Optional[Message]
    args = context.args

    user_id = extract_user(message, args)
    if not user_id:
        send_message(update.effective_message, tl(update.effective_message, "Anda sepertinya tidak mengacu pada pengguna."))
        return
    if user_id == "error":
        send_message(update.effective_message, tl(update.effective_message, "Error: Unknown user!"))
        return ""

    user_chat = context.bot.get_chat(user_id)
    if user_chat.type != 'private':
        send_message(update.effective_message, tl(update.effective_message, "Itu bukan pengguna!"))
        return

    if not sql.is_user_gbanned(user_id):
        send_message(update.effective_message, tl(update.effective_message, "Pengguna ini tidak dilarang secara global!"))
        return

    banner = update.effective_user  # type: Optional[User]

    send_message(update.effective_message, tl(update.effective_message, "Saya akan berikan {} kesempatan kedua, secara global.").format(user_chat.first_name))

    send_to_list(context.bot, SUDO_USERS + SUPPORT_USERS,
                 tl(update.effective_message, "{} telah menghapus larangan global untuk pengguna {}").format(mention_html(banner.id, banner.first_name),
                                                   mention_html(user_chat.id, user_chat.first_name)),
                 html=True)

    sql.ungban_user(user_id)

    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:
            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:
                send_message(update.effective_message, tl(update.effective_message, "Tidak dapat menghapus larangan secara global karena: {}").format(excp.message))
                context.bot.send_message(OWNER_ID, tl(update.effective_message, "Tidak dapat menghapus larangan secara global karena: {}").format(excp.message))
                return
        except TelegramError:
            pass

    send_to_list(context.bot, SUDO_USERS + SUPPORT_USERS, tl(update.effective_message, "Menghapus larangan global selesai!"))

    send_message(update.effective_message, tl(update.effective_message, "Orang ini telah dihapus larangannya."))
Exemple #4
0
def __user_info__(user_id):
    is_gbanned = sql.is_user_gbanned(user_id)

    text = "Dilarang secara global: <b>{}</b>"
    if is_gbanned:
        text = text.format("Yes")
        user = sql.get_gbanned_user(user_id)
        if user.reason:
            text += "\nAlasan: {}".format(html.escape(user.reason))
    else:
        text = text.format("No")
    return text
Exemple #5
0
def __user_info__(user_id, chat_id):
    is_gbanned = sql.is_user_gbanned(user_id)

    text = tl(user_id, "Globally banned: <b>{}</b>")
    if is_gbanned:
        text = text.format("Yes")
        user = sql.get_gbanned_user(user_id)
        if user.reason:
            text += "\nReason: {}".format(html.escape(user.reason))
    else:
        text = text.format("No")
    return text
Exemple #6
0
def check_and_ban(update, user_id, should_message=True):
    chat = update.effective_chat
    message = update.effective_message
    try:
        if spam_watch is not None:
            spam_watch_ban = spam_watch.get_ban(user_id)
            if spam_watch_ban:
                chat.kick_member(user_id)
                if should_message:
                    message.reply_markdown(
                        "**Pengguna ini terdeteksi sebagai spambot oleh SpamWatch dan telah dikeluarkan!**\n\nKunjungi @SpamWatchSupport untuk membebaskan anda dari masalah ini!")
                return
    except Exception as e:
        print(e)
    if sql.is_user_gbanned(user_id):
        update.effective_chat.kick_member(user_id)
        if should_message:
            update.effective_send_message(update.effective_message, tl(update.effective_message, "Ini orang jahat, mereka seharusnya tidak ada di sini!"))
Exemple #7
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.")
Exemple #8
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."))
Exemple #9
0
def ungban(update, context):
    message = update.effective_message  # type: Optional[Message]
    args = context.args

    user_id = extract_user(message, args)
    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 user_id == "error":
        send_message(update.effective_message,
                     tl(update.effective_message, "Error: Unknown user!"))
        return ""

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

    if not sql.is_user_gbanned(user_id):
        send_message(update.effective_message,
                     tl(update.effective_message, "This user is not gbanned!"))
        return

    banner = update.effective_user  # type: Optional[User]

    send_message(
        update.effective_message,
        tl(update.effective_message,
           "I'll give {} a second chance, globally.").format(
               user_chat.first_name))

    context.bot.send_message(MESSAGE_DUMP,
                             tl(update.effective_message,
                                "{} has ungbanned user {}").format(
                                    mention_html(banner.id, banner.first_name),
                                    mention_html(user_chat.id,
                                                 user_chat.first_name)),
                             parse_mode=ParseMode.HTML)

    sql.ungban_user(user_id)

    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:
            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:
                send_message(
                    update.effective_message,
                    tl(update.effective_message,
                       "Could not un-gban due to: {}").format(excp.message))
                context.bot.send_message(
                    OWNER_ID,
                    tl(update.effective_message,
                       "Could not un-gban due to: {}").format(excp.message))
                return
        except TelegramError:
            pass

    context.bot.send_message(MESSAGE_DUMP,
                             tl(update.effective_message, "un-gban complete!"))

    send_message(update.effective_message,
                 tl(update.effective_message, "Person has been un-gbanned."))