コード例 #1
0
ファイル: afk.py プロジェクト: sandidias/KagaRobot
def check_afk(update, context, user_id, fst_name, userc_id):
    if afk_db.is_afk(user_id):
        user = afk_db.check_afk_status(user_id)
        if not user["reason"]:
            if int(userc_id) == int(user_id):
                return
            res = "{} is afk".format(fst_name)
            replafk = update.effective_message.reply_text(res)
        else:
            if int(userc_id) == int(user_id):
                return
            res = "<b>{}</b> jauh dari keyboard! mengatakan itu karena <b>Alasan:</b> <code>{}</code>".format(
                fst_name, user["reason"])
            replafk = update.effective_message.reply_text(
                res, parse_mode="html"
            )
        sleep(10)
        try:
            replafk.delete()
        except BadRequest:
            return
コード例 #2
0
def info(update, context):
    args = context.args
    msg = update.effective_message  # type: Optional[Message]
    user_id = extract_user(update.effective_message, args)
    chat = update.effective_chat

    if user_id:
        user = context.bot.get_chat(user_id)

    elif not msg.reply_to_message and not args:
        user = msg.from_user

    elif not msg.reply_to_message and (
            not args or
        (len(args) >= 1 and not args[0].startswith("@")
         and not args[0].isdigit()
         and not msg.parse_entities([MessageEntity.TEXT_MENTION]))):
        msg.reply_text("Saya tidak dapat mengekstrak pengguna dari ini.")
        return

    else:
        return

    del_msg = msg.reply_text(
        "Tunggu sebentar sementara saya mencuri beberapa data dari <b>Database FBI</b>...",
        parse_mode=ParseMode.HTML,
    )

    text = ("<b>USER INFO</b>:"
            "\n<b>ID:</b> <code>{}</code>"
            "\n<b>Nama Depan:</b> <code>{}</code>".format(
                user.id, html.escape(user.first_name)))

    if user.last_name:
        text += "\n<b>Nama Belakang:</b> <code>{}</code>".format(
            html.escape(user.last_name))

    if user.username:
        text += "\n<b>Nama pengguna:</b> @{}".format(html.escape(
            user.username))

    text += "\n<b>Tautan pengguna permanen:</b> {}".format(
        mention_html(user.id, "link"))

    text += "\n<b>Jumlah foto profil:</b> <code>{}</code>".format(
        context.bot.get_user_profile_photos(user.id).total_count)

    if chat.type != "private":
        status = context.bot.get_chat_member(chat.id, user.id).status
        if status:
            _stext = "\n<b>Status:</b> <code>{}</code>"

        afk_st = is_afk(user.id)
        if afk_st:
            text += _stext.format("Away From Keyboard")
        else:
            status = context.bot.get_chat_member(chat.id, user.id).status
            if status:
                if status in {"left", "kicked"}:
                    text += _stext.format("Absent")
                elif status == "member":
                    text += _stext.format("Present")
                elif status in {"administrator", "creator"}:
                    text += _stext.format("Admin")

    try:
        sw = spamwtc.get_ban(int(user.id))
        if sw:
            text += "\n\n<b>Orang ini dilarang di Spamwatch!</b>"
            text += f"\n<b>Alasan:</b> <pre>{sw.reason}</pre>"
            text += "\nAda yang salah coba tanyakan di @SpamWatchSupport"
        else:
            pass
    except BaseException:
        pass  # don't crash if api is down somehow...

    cas_banned = check_cas(user.id)
    if cas_banned:
        text += "\n\n<b>Orang ini Dilarang di CAS!</b>"
        text += f"\n<b>Alasan: </b> <a href='{cas_banned}'>CAS Banned</a>"
        text += "\nAda yang salah coba tanyakan di @cas_discussion"

    if user.id == OWNER_ID:
        text += "\n\nAye, orang ini adalah pemilikku.\nSaya tidak akan pernah melakukan apa pun untuk melawannya!"

    elif user.id in DEV_USERS:
        text += (
            "\n\nOrang ini adalah salah satu pengguna dev saya! "
            "\nDia memiliki perintah paling banyak untuk saya setelah pemilik saya."
        )

    elif user.id in SUDO_USERS:
        text += ("\n\nOrang ini adalah salah satu pengguna sudo saya! "
                 "Hampir sekuat pemilik saya - jadi tontonlah.")

    elif user.id in SUPPORT_USERS:
        text += (
            "\n\nOrang ini adalah salah satu pengguna dukungan saya! "
            "Bukan pengguna sudo, tetapi masih bisa membuat Anda keluar dari peta."
        )

    elif user.id in WHITELIST_USERS:
        text += ("\n\nOrang ini telah masuk daftar putih! "
                 "Itu artinya saya tidak boleh melarang / menendang mereka.")

    elif user.id == int(1087968824):
        text += "\n\nIni adalah admin anonim di grup ini. "

    try:
        memstatus = chat.get_member(user.id).status
        if memstatus == "administrator" or memstatus == "creator":
            result = context.bot.get_chat_member(chat.id, user.id)
            if result.custom_title:
                text += f"\n\nPengguna ini memiliki judul khusus <b>{result.custom_title}</b> di obrolan ini."
    except BadRequest:
        pass

    for mod in USER_INFO:
        try:
            mod_info = mod.__user_info__(user.id).strip()
        except TypeError:
            mod_info = mod.__user_info__(user.id, chat.id).strip()
        if mod_info:
            text += "\n\n" + mod_info

    try:
        profile = context.bot.get_user_profile_photos(user.id).photos[0][-1]
        context.bot.sendChatAction(chat.id, "upload_photo")
        context.bot.send_photo(
            chat.id,
            photo=profile,
            caption=(text),
            parse_mode=ParseMode.HTML,
        )
    except IndexError:
        context.bot.sendChatAction(chat.id, "typing")
        msg.reply_text(text,
                       parse_mode=ParseMode.HTML,
                       disable_web_page_preview=True)
    finally:
        del_msg.delete()