Пример #1
0
def gbanstat(update, context):
    args = context.args
    if len(args) > 0:
        if args[0].lower() in ["on", "yes"]:
            gban_db.enable_gbans(update.effective_chat.id)
            update.effective_message.reply_text(
                "Saya telah mengaktifkan Spam Shield di grup ini. Ini akan membantu melindungi Anda "
                "dari spammer, karakter yang tidak menyenangkan, dan troll terbesar."
            )
        elif args[0].lower() in ["off", "no"]:
            gban_db.disable_gbans(update.effective_chat.id)
            update.effective_message.reply_text(
                "Saya telah menonaktifkan perisai Spam di grup ini. SpamShield tidak akan mempengaruhi pengguna Anda "
                "lagi. Anda akan kurang terlindungi dari troll dan spammer "
                "bagaimanapun juga!")
    else:
        update.effective_message.reply_text(
            "Beri saya beberapa argumen untuk memilih pengaturan! on/off, yes/no!\n\n"
            "Pengaturan Anda saat ini adalah: {}\n"
            "Jika Benar, Semua Perisai Spam yang terjadi juga akan terjadi di grup Anda. "
            "Ketika Salah, mereka tidak akan melakukannya, meninggalkan Anda dengan kemungkinan belas kasihan "
            "oleh spammers.".format(
                gban_db.does_chat_gban(update.effective_chat.id)))
Пример #2
0
def enforce_gban(update, context):
    # Not using @restrict handler to avoid spamming - just ignore if cant gban.
    try:
        if (gban_db.does_chat_gban(update.effective_chat.id)
                and update.effective_chat.get_member(
                    context.bot.id).can_restrict_members):
            user = update.effective_user
            chat = update.effective_chat
            msg = update.effective_message

            if user and not is_user_admin(chat, user.id):
                check_and_ban(update, user.id)

            if msg.new_chat_members:
                new_members = update.effective_message.new_chat_members
                for mem in new_members:
                    check_and_ban(update, mem.id)

            if msg.reply_to_message:
                user = msg.reply_to_message.from_user
                if user and not is_user_admin(chat, user.id):
                    check_and_ban(update, user.id, should_message=False)
    except (Unauthorized, BadRequest):
        pass
Пример #3
0
def __chat_settings__(chat_id, user_id):
    return "Obrolan ini berlaku *gbans*: `{}`.".format(
        gban_db.does_chat_gban(chat_id))
Пример #4
0
def ungban(update, context):
    message = update.effective_message
    args = context.args
    user_id = extract_user(message, args)
    if not user_id:
        message.reply_text("Anda sepertinya tidak mengacu pada pengguna.")
        return

    user_chat = context.bot.get_chat(user_id)
    if user_chat.type != "private":
        message.reply_text("Itu bukan pengguna!")
        return

    if not gban_db.is_user_gbanned(user_id):
        message.reply_text("Pengguna ini tidak dilarang!")
        return

    banner = update.effective_user

    message.reply_text(
        "Saya akan memberi {} kesempatan kedua, secara global.".format(
            user_chat.first_name))

    context.bot.sendMessage(
        GBAN_LOGS,
        "<b>Regression of Global Ban</b>"
        "\n#UNGBAN"
        "\n<b>Status:</b> <code>Ceased</code>"
        "\n<b>Sudo Admin:</b> {}"
        "\n<b>User:</b> {}"
        "\n<b>ID:</b> <code>{}</code>".format(
            mention_html(banner.id, banner.first_name),
            mention_html(user_chat.id, user_chat.first_name),
            user_chat.id,
        ),
        parse_mode=ParseMode.HTML,
    )

    chats = get_all_chats()
    for chat in chats:
        chat_id = chat["chat_id"]

        # Check if this group has disabled gbans
        if not gban_db.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:
                message.reply_text(
                    "Tidak dapat membatalkan gban karena: {}".format(
                        excp.message))
                context.bot.send_message(
                    OWNER_ID,
                    "Tidak dapat membatalkan gban karena: {}".format(
                        excp.message),
                )
                return
        except TelegramError:
            pass

    gban_db.ungban_user(user_id)
    message.reply_text("Tidak di larang lagi.")