Ejemplo n.º 1
0
async def alive_function(answers):
    buttons = InlineKeyboard(row_width=2)
    bot_state = 'Dead' if not await app.get_me() else 'Alive'
    ubot_state = 'Dead' if not await app2.get_me() else 'Alive'
    buttons.add(
        InlineKeyboardButton(
            'Stats',
            callback_data='stats_callback'
        ),
        InlineKeyboardButton(
            "Go Inline!",
            switch_inline_query_current_chat=""
        )
    )

    msg = f"""
**[William✨](https://github.com/thehamkercat/WilliamButcherBot):**
**MainBot:** `{bot_state}`
**UserBot:** `{ubot_state}`
**Python:** `{pyver.split()[0]}`
**Pyrogram:** `{pyrover}`
**MongoDB:** `{mongover}`
**Platform:** `{sys.platform}`
**Profiles:** [BOT](t.me/{BOT_USERNAME}) | [UBOT](t.me/{USERBOT_USERNAME})
"""
    answers.append(
        InlineQueryResultArticle(
            title='Alive',
            description="Check Bot's Stats",
            thumb_url="https://static2.aniimg.com/upload/20170515/414/c/d/7/cd7EEF.jpg",
            input_message_content=InputTextMessageContent(
                msg,
                disable_web_page_preview=True
            ),
            reply_markup=buttons,
        )
    )
    return answers
Ejemplo n.º 2
0
async def inline_help_func(__HELP__):
    buttons = InlineKeyboard(row_width=2)
    buttons.add(
        InlineKeyboardButton(
            'Get More Help.',
            url=f"t.me/{BOT_USERNAME}?start=start"
        ),
        InlineKeyboardButton(
            "Go Inline!",
            switch_inline_query_current_chat=""
        )
    )
    answerss = [
        InlineQueryResultArticle(
            title="Inline Commands",
            description="Help Related To Inline Usage.",
            input_message_content=InputTextMessageContent(__HELP__),
            thumb_url="https://hamker.me/cy00x5x.png",
            reply_markup=buttons
        )
    ]
    answerss = await alive_function(answerss)
    return answerss
Ejemplo n.º 3
0
async def speedtest_init(query):
    answers = []
    user_id = query.from_user.id
    if user_id not in SUDOERS:
        msg = "**ERROR**\n__THIS FEATURE IS ONLY FOR SUDO USERS__"
        answers.append(
            InlineQueryResultArticle(
                title="ERROR",
                description="THIS FEATURE IS ONLY FOR SUDO USERS",
                input_message_content=InputTextMessageContent(msg),
            ))
        return answers
    msg = "**Click The Button Below To Perform A Speedtest**"
    button = InlineKeyboard(row_width=1)
    button.add(
        InlineKeyboardButton(text="Test", callback_data="test_speedtest"))
    answers.append(
        InlineQueryResultArticle(
            title="Click Here",
            input_message_content=InputTextMessageContent(msg),
            reply_markup=button,
        ))
    return answers
Ejemplo n.º 4
0
def petardi(_, message):
    if message.chat.id not in chatScommesse:
        message.reply("Gruppo non abilitato, contatta @Anatras02 se credi si tratti di un errore")
        return

    utente = str(message.from_user.id)
    codice = codice_func()

    keyboard = InlineKeyboard(row_width=1)
    keyboard.add(
        InlineKeyboardButton("Lancia 💣", callback_data=f"lancia|{utente}|{codice}"),
        InlineKeyboardButton("Cancella ❌", callback_data=f"cancella|{utente}|{codice}")
    )

    tiratori_petardi[f"{utente}{codice}"] = dict()
    tiratori_petardi[f"{utente}{codice}"]["terminato"] = False
    tiratori_petardi[f"{utente}{codice}"]["risultati"] = []

    message.reply(
        f"{message.from_user.first_name} sei abbastanza na🅱️oletano da rischiare le dita per un po' di divertimento?",
        reply_markup=keyboard,
        quote=False
    )
Ejemplo n.º 5
0
async def inline_help_func(__HELP__):
    buttons = InlineKeyboard(row_width=3)
    keywords_list = [
        "alive", "ping", "tr", "ud", "google", "bitly",
        "wall", "yt", "torrent", "lyrics", "wiki",
        "speedtest", "music", "saavn", "deezer",
        "gh_repo", "gh_user", "search", "pastebin",
        "nsfw_scan", "ytmusic", "carbon", "info"
    ]
    buttons.add(*[(InlineKeyboardButton(
        text=i, switch_inline_query_current_chat=i)) for i in keywords_list])
    answerss = [
        InlineQueryResultArticle(
            title="Inline Commands",
            description="Help Related To Inline Usage.",
            input_message_content=InputTextMessageContent(
                "Click A Button To Get Started."),
            thumb_url="https://hamker.me/cy00x5x.png",
            reply_markup=buttons
        )
    ]
    answerss = await alive_function(answerss)
    return answerss
Ejemplo n.º 6
0
async def un_auth(_, message):
    if message.chat.id is AdminSettings:
        return

    msg = f"""
Hi {message.chat.first_name},
You must be looking forward on how I work.
In that case I can give you helpful links to self host me on your own.
Here are some links for you
        """
    buttons = InlineKeyboard(row_width=2)
    buttons.add(
        InlineKeyboardButton(
            'Documentation',
            url='https://t.me/SkinoidBot',
        ),
        InlineKeyboardButton(
            'Repository',
            url='https://github.com/TeamEviral/Skynoid',
        ),
        InlineKeyboardButton('Support', url='https://t.me/SkynoidSupport'),
    )
    await message.reply(msg, reply_markup=buttons)
Ejemplo n.º 7
0
async def carbon_inline_func(answers, link):
    link = link.split("/")
    if link[3] == "c":
        chat, message_id = int("-100" + link[4]), int(link[5])
    else:
        chat, message_id = link[3], link[4]
    m = await app.get_messages(chat, message_ids=int(message_id))
    if not m.text and not m.document:
        m = await app2.get_messages(chat, message_ids=int(message_id))
    if m.text:
        content = m.text
    else:
        if m.document.file_size > 1048576:
            answers.append(
                InlineQueryResultArticle(
                    title="DOCUMENT TOO BIG",
                    description="Maximum supported size is 1MB",
                    input_message_content=InputTextMessageContent(
                        "DOCUMENT TOO BIG"),
                ))
            return answers
        doc = await m.download()
        async with aiofiles.open(doc, mode="r") as f:
            content = await f.read()
        os.remove(doc)
    image = await make_carbon(content)
    link = await paste(content)
    # To Pre-cache the media
    carbon = await app.send_document(MESSAGE_DUMP_CHAT, image)
    os.remove(image)
    buttons = InlineKeyboard(row_width=1)
    buttons.add(InlineKeyboardButton(text="Paste Link", url=link))
    answers.append(
        InlineQueryResultCachedDocument(file_id=carbon.document.file_id,
                                        title="Carbon",
                                        reply_markup=buttons))
    return answers
Ejemplo n.º 8
0
async def youtube_func(answers, text):
    results = await arq.youtube(text)
    if not results.ok:
        answers.append(
            InlineQueryResultArticle(
                title="Error",
                description=results.result,
                input_message_content=InputTextMessageContent(results.result),
            ))
        return answers
    limit = 0
    results = results.result
    for i in results:
        if limit > 48:
            break
        limit += 1
        buttons = InlineKeyboard(row_width=1)
        video_url = f"https://youtube.com{i.url_suffix}"
        buttons.add(InlineKeyboardButton("Watch", url=video_url))
        caption = f"""
**Title:** {i.title}
**Views:** {i.views}
**Channel:** {i.channel}
**Duration:** {i.duration}
**Uploaded:** {i.publish_time}
**Description:** {i.long_desc}"""
        description = f"{i.views} | {i.channel} | " + f"{i.duration} | {i.publish_time}"
        answers.append(
            InlineQueryResultArticle(
                title=i.title,
                thumb_url=i.thumbnails[0],
                description=description,
                input_message_content=InputTextMessageContent(
                    caption, disable_web_page_preview=True),
                reply_markup=buttons,
            ))
    return answers
Ejemplo n.º 9
0
async def saavn_func(answers, text):
    buttons_list = []
    results = await arq.saavn(text)
    if not results.ok:
        answers.append(
            InlineQueryResultArticle(
                title="Error",
                description=results.result,
                input_message_content=InputTextMessageContent(results.result),
            )
        )
        return answers
    results = results.result
    for count, i in enumerate(results):
        buttons = InlineKeyboard(row_width=1)
        buttons.add(InlineKeyboardButton("Download | Play", url=i.media_url))
        buttons_list.append(buttons)
        duration = await time_convert(i.duration)
        caption = f"""
**Title:** {i.song}
**Album:** {i.album}
**Duration:** {duration}
**Release:** {i.year}
**Singers:** {i.singers}"""
        description = f"{i.album} | {duration} " + f"| {i.singers} ({i.year})"
        answers.append(
            InlineQueryResultArticle(
                title=i.song,
                input_message_content=InputTextMessageContent(
                    caption, disable_web_page_preview=True
                ),
                description=description,
                thumb_url=i.image,
                reply_markup=buttons_list[count],
            )
        )
    return answers
Ejemplo n.º 10
0
async def youtube_func(answers, text):
    buttons_list = []
    results = await arq.youtube(text)
    for i in results:
        buttons = InlineKeyboard(row_width=1)
        video_url = f"https://youtube.com{results[i].url_suffix}"
        buttons.add(
            InlineKeyboardButton(
                'Watch',
                url=video_url
            )
        )
        buttons_list.append(buttons)
        caption = f"""
**Title:** {results[i].title}
**Views:** {results[i].views}
**Channel:** {results[i].channel}
**Duration:** {results[i].duration}
**Uploaded:** {results[i].publish_time}
**Description:** {results[i].long_desc}"""
        description = f"{results[i].views} | {results[i].channel} | " \
            + f"{results[i].duration} | {results[i].publish_time}"
        try:
            answers.append(
                InlineQueryResultArticle(
                    title=results[i].title,
                    thumb_url=results[i].thumbnails[0],
                    description=description,
                    input_message_content=InputTextMessageContent(
                        caption,
                        disable_web_page_preview=True
                    ),
                    reply_markup=buttons_list[i]
                ))
        except (KeyError, ValueError):
            pass
    return answers
Ejemplo n.º 11
0
async def inline_help_func(__HELP__):
    buttons = InlineKeyboard(row_width=4)
    buttons.add(
        *[(InlineKeyboardButton(text=i, switch_inline_query_current_chat=i))
          for i in keywords_list])
    answerss = [
        InlineQueryResultArticle(
            title="Inline Commands",
            description="Help Related To Inline Usage.",
            input_message_content=InputTextMessageContent(
                "Click A Button To Get Started."),
            thumb_url="https://hamker.me/cy00x5x.png",
            reply_markup=buttons,
        ),
        InlineQueryResultArticle(
            title="Github Repo",
            description="Get Github Respository Of Bot.",
            input_message_content=InputTextMessageContent(
                "https://github.com/thehamkercat/WilliamButcherBot"),
            thumb_url="https://hamker.me/gjc9fo3.png",
        ),
    ]
    answerss = await alive_function(answerss)
    return answerss
Ejemplo n.º 12
0
async def github_user_func(answers, text):
    URL = f"https://api.github.com/users/{text}"
    result = await fetch(URL)
    buttons = InlineKeyboard(row_width=1)
    buttons.add(
        InlineKeyboardButton(text="Open On Github",
                             url=f"https://github.com/{text}"))
    caption = f"""
**Info Of {result['name']}**
**Username:** `{text}`
**Bio:** `{result['bio']}`
**Profile Link:** [Here]({result['html_url']})
**Company:** `{result['company']}`
**Created On:** `{result['created_at']}`
**Repositories:** `{result['public_repos']}`
**Blog:** `{result['blog']}`
**Location:** `{result['location']}`
**Followers:** `{result['followers']}`
**Following:** `{result['following']}`"""
    answers.append(
        InlineQueryResultPhoto(photo_url=result["avatar_url"],
                               caption=caption,
                               reply_markup=buttons))
    return answers
Ejemplo n.º 13
0
async def deezer_func(answers, text):
    buttons_list = []
    results = await arq.deezer(text, 5)
    if not results.ok:
        answers.append(
            InlineQueryResultArticle(
                title="Error",
                description=results.result,
                input_message_content=InputTextMessageContent(results.result),
            )
        )
        return answers
    results = results.result
    for count, i in enumerate(results):
        buttons = InlineKeyboard(row_width=1)
        buttons.add(InlineKeyboardButton("Download | Play", url=i.url))
        buttons_list.append(buttons)
        duration = await time_convert(i.duration)
        caption = f"""
**Title:** {i.title}
**Artist:** {i.artist}
**Duration:** {duration}
**Source:** [Deezer]({i.source})"""
        description = f"{i.artist} | {duration}"
        answers.append(
            InlineQueryResultArticle(
                title=i.title,
                thumb_url=i.thumbnail,
                description=description,
                input_message_content=InputTextMessageContent(
                    caption, disable_web_page_preview=True
                ),
                reply_markup=buttons_list[count],
            )
        )
    return answers
Ejemplo n.º 14
0
async def saavn_func(answers, text):
    buttons_list = []
    results = await arq.saavn(text)
    for i in results:
        buttons = InlineKeyboard(row_width=1)
        buttons.add(
            InlineKeyboardButton(
                'Download | Play',
                url=results[i].media_url
            )
        )
        buttons_list.append(buttons)
        duration = await time_convert(results[i].duration)
        caption = f"""
**Title:** {results[i].song}
**Album:** {results[i].album}
**Duration:** {duration}
**Release:** {results[i].year}
**Singers:** {results[i].singers}"""
        description = f"{results[i].album} | {duration} " \
            + f"| {results[i].singers} ({results[i].year})"
        try:
            answers.append(
                InlineQueryResultArticle(
                    title=results[i].song,
                    input_message_content=InputTextMessageContent(
                        caption,
                        disable_web_page_preview=True
                    ),
                    description=description,
                    thumb_url=results[i].image,
                    reply_markup=buttons_list[i]
                ))
        except (KeyError, ValueError):
            pass
    return answers
Ejemplo n.º 15
0
async def inline_help_func(__HELP__):
    buttons = InlineKeyboard(row_width=4)
    buttons.add(
        *[(InlineKeyboardButton(text=i, switch_inline_query_current_chat=i))
          for i in keywords_list])
    answerss = [
        InlineQueryResultArticle(
            title="Inline Commands",
            description="Help Related To Inline Usage.",
            input_message_content=InputTextMessageContent(
                "Click A Button To Get Started."),
            thumb_url="https://telegra.ph/file/7ee7b8ea4b6955642aa2e.jpg",
            reply_markup=buttons,
        ),
        InlineQueryResultArticle(
            title="Github Repo",
            description="Get Github Respository Of Bot.",
            input_message_content=InputTextMessageContent(
                "https://github.com/TeamInnexia"),
            thumb_url="https://telegra.ph/file/36d8e6e3d7849e7e8d396.jpg",
        ),
    ]
    answerss = await alive_function(answerss)
    return answerss
Ejemplo n.º 16
0
                    thumb_url=results[i].url_thumb,
                    caption=f"[Source]({results[i].url_image})"
                ))
        except KeyError:
            pass
    return answers


async def saavn_func(answers, text):
    buttons_list = []
    results = await arq.saavn(text)
    for i in results:
        buttons = InlineKeyboard(row_width=1)
        buttons.add(
            InlineKeyboardButton(
                'Download | Play',
                url=results[i].media_url
            )
        )
        buttons_list.append(buttons)
        duration = await time_convert(results[i].duration)
        caption = f"""
**Title:** {results[i].song}
**Album:** {results[i].album}
**Duration:** {duration}
**Release:** {results[i].year}
**Singers:** {results[i].singers}"""
        description = f"{results[i].album} | {duration} " \
            + f"| {results[i].singers} ({results[i].year})"
        try:
            answers.append(
                InlineQueryResultArticle(
Ejemplo n.º 17
0
def lancia_query(app, callback_query):
    frasi_effetto_successo = [
        "Hai lanciato un petardo all'ultimo, non sei morto ma hai fatto saltare **{punti}** dita a {giocatore}",
        "Hai lanciato il petardo ma non è scoppiato, nel dubbio scommetti con dod1c1 il frosciu e vinci "
        "**{punti}**kkk ",
        "Lanci un petardo in un cimitero a Napoli, TwisterHDD e il sindaco ti incominciano ad inseguire.\nPerdi "
        "**{punti}** anni di vita ",
        "Lanci un petardo in taverna, Edo ti muta per **{punti}** giorni",
        "Dopo aver tirato un petardo Edo spaventato esce da dietro un albero avvolto in un impermeabile grigio, "
        "lo apre di scatto e ti mostra il pene, esclami: \"Che bel pisello da **{punti}**cm\"",
        "Lanci un petardo al grido di \"DRICER SEI UN TESTA DI CAZZO\", Dricer arriva e ti rompe **{punti}** "
        "costole",
        "Lanci un petardo ma quest’ultimo non scoppia, dod1c1 deluso ti dissa **{punti}** volte in un freestyle"
    ]

    frasi_effetto_perdita = [
        "Ti scoppia un petardo in mano, perdi tutte le dita della mano!\nSei costretto a scappare in pronto "
        "soccorso",
    ]

    codice = callback_query.data.split("|")[2]
    utente = int(callback_query.data.split("|")[1])
    tag_utente = f"{utente}{codice}"
    try:
        tiratori_petardi[tag_utente]
    except KeyError:
        callback_query.answer("Il bot è stato riavviato mentre giocavi, rilancia il comando /petardi")
        return

    if callback_query.from_user.id != utente:
        callback_query.answer("Eh, volevi!")
        return

    keyboard = InlineKeyboard(row_width=1)
    keyboard.add(
        InlineKeyboardButton("Lancia 💣", callback_data=f"lancia|{utente}|{codice}"),
        InlineKeyboardButton("Termina ❌", callback_data=f"termina|{utente}|{codice}")
    )

    numero_lanci = len(tiratori_petardi[tag_utente]["risultati"])
    if numero_lanci == 1:
        probabilità = 5
    elif numero_lanci == 2:
        probabilità = 7
    elif numero_lanci == 3:
        if random.randint(1, 100) < 20:
            probabilità = 30
        else:
            probabilità = 10
    elif numero_lanci == 4:
        probabilità = 15
    elif numero_lanci == 5:
        probabilità = random.randint(15, 25)
    elif numero_lanci == 6:
        probabilità = random.randint(20, 35)
    elif 6 < numero_lanci <= 10:
        probabilità = random.randint(30, 40)
    elif 10 < numero_lanci < 20:
        probabilità = random.randint(35, 60)
    else:
        probabilità = random.randint(75, 100)

    if not tiratori_petardi[tag_utente]["terminato"] and \
            (not tiratori_petardi[tag_utente]["risultati"] or random.randint(1, 100) >= probabilità):
        numero = random.randint(1, 25)

        giocatore_random_var = giocatore_random(utente, callback_query.message.chat.id, app)
        frase = random.choice(frasi_effetto_successo).format(punti="__[REDACTED]__", giocatore=giocatore_random_var)

        tiratori_petardi[tag_utente]["risultati"].append(numero)

        counter = 1
        tiri = f"{frase}\n\n"
        for _ in tiratori_petardi[tag_utente]["risultati"]:
            tiri += f"**Punteggio {counter}:** [__REDACTED__]\n"
            counter += 1

        try:
            callback_query.edit_message_text(
                tiri,
                reply_markup=keyboard
            )

            time.sleep(0.1)
        except FloodWait:
            callback_query.answer("Sì ma stai calmo dio cane")

    else:
        keyboard = InlineKeyboard(row_width=1)
        keyboard.add(
            InlineKeyboardButton("Mostra Punteggi ✌️", callback_data=f"punteggio|{utente}|{codice}|F"),
        )

        tiratori_petardi[tag_utente]["terminato"] = True

        frase = random.choice(frasi_effetto_perdita)
        frase += f"\n\nIl petardo ti è esploso al turno numero **{numero_lanci + 1}**"
        callback_query.edit_message_text(
            frase,
            reply_markup=keyboard
        )
Ejemplo n.º 18
0
async def pm_button(client, query):
    print(query)
    if not PM_PERMIT:
        return
    if (query.from_user.id in AdminSettings
            and not re.match('engine_pm_apr', query.data)
            and not re.match('engine_pm_blk', query.data)):
        await client.answer_callback_query(
            query.id,
            "You shouln't click this.",
            show_alert=False,
        )
        return
    if re.match('engine_pm_block', query.data):
        await app.send_sticker(
            query.from_user.id,
            sticker='CAADAgAD1QQAAp7kTAry1JrL3zVXSxYE',
        )
        await setbot.edit_inline_text(
            query.from_user.id,
            'Sorry, no cash for today.\nGoodbye!',
        )
        await app.block_user(query.from_user.id)
    elif re.match('engine_pm_nope', query.data):
        await setbot.edit_inline_text(query.inline_message_id, '👍')
        await app.send_message(
            query.from_user.id,
            'Hello, please wait for a reply from my master, thank you.',
        )
        buttons = InlineKeyboard(row_width=2)
        buttons.add(
            InlineKeyboardButton(
                'Approve',
                callback_data=f'engine_pm_apr-{query.from_user.id}',
            ),
            InlineKeyboardButton(
                'Block',
                callback_data=f'engine_pm_blk-{query.from_user.id}',
            ),
        )
        pm_bot_mention = mention_markdown(
            query.from_user.id,
            query.from_user.first_name,
        )
        pm_bot_message = f'~{pm_bot_mention} want to contact you~'
        await setbot.send_message(
            NOTIFY_ID,
            pm_bot_message,
            reply_markup=buttons,
        )
        set_req(query.from_user.id, True)
    elif re.match('engine_pm_report', query.data):
        await setbot.edit_inline_text(query.inline_message_id, '👍')
        await app.send_message(
            query.from_user.id,
            'Hello, if you want to report any bugs, visit @NanaBotSupport.',
        )
    elif re.match('engine_pm_none', query.data):
        await setbot.edit_inline_text(query.inline_message_id, '👍')
        await app.send_message(
            query.from_user.id,
            'Alright then',
        )
    elif re.match('engine_pm_apr', query.data):
        target = query.data.split('-')[1]
        await query.message.edit_text(f'[Approved to PM]({target})')
        await app.send_message(
            target,
            'Hello, this is **Nana**, my master approved you to PM.',
        )
        set_whitelist(int(target), True)
    elif re.match(r'engine_pm_blk', query.data):
        target = query.data.split('-')[1]
        await query.message.edit_text('That user was blocked ~')
        await app.send_message(
            target,
            'Hello, you have been blocked.\nSorry about this!',
        )
        await app.block_user(target)
    else:
        await setbot.edit_inline_text(query.inline_message_id, '🙆‍')
Ejemplo n.º 19
0
def tira_query(app, callback_query):
    if "tira" in callback_query.data:
        frasi_effetto = [
            "Hai lanciato una **freccia** che è andata **{punti}** metri lontana",
            "Con una sola **freccia** sei riuscito ad uccidere ben **{punti}** uccellini in volo",
            "**{giocatore}** ti fa incazzare, dalla rabbia gli spari **{punti}** frecce sul petto "
            "lasciandolo a terra stecchito",
            '**Edo ⚡️** viene da te e con aria soddisfatta ti dice __Haha, sono il dio supremo__\nDalla '
            'rabbia gli tiri una freccia che gli leva **{punti}** punti vita!',
            "Non hai tempo di tirare fuori la freccia, prendi l'arco e lo **spacchi in testa** a **{"
            "giocatore}** provocandogli **{punti}** danni",
            "Sbagli a lanciare la freccia e **ti colpisci un piede**, incomici a bestemmiare "
            "**selvaggemente**\nDio scende in terra **incazzato** perché gli hai levato **{punti}** punti "
            "vita",
            "@dod1c1 spara {punti} frecce a @tdjj05 su una di queste è scalfito il messaggio \"DRICER SEI "
            "UN TESTA DI CAZZO\""
        ]

        codice = callback_query.data.split("|")[2]
        utente = int(callback_query.data.split("|")[1])
        tag_utente = f"{utente}{codice}"
        try:
            tiratori_tca[tag_utente]
        except KeyError:
            callback_query.answer(
                "Il bot è stato riavviato mentre giocavi, rilancia il comando /tca"
            )
            return

        if callback_query.from_user.id != utente:
            callback_query.answer("Eh, volevi!")
            return

        numero = random.randint(1, 25)

        giocatore_random_var = giocatore_random(utente,
                                                callback_query.message.chat.id,
                                                app)
        frase = random.choice(frasi_effetto).format(
            punti=numero, giocatore=giocatore_random_var)

        tiratori_tca[tag_utente]["risultati"].append(numero)

        keyboard = InlineKeyboard(row_width=1)
        keyboard.add(
            InlineKeyboardButton("Tira 🏹",
                                 callback_data=f"tira|{utente}|{codice}"))

        counter = 1
        tiri = ""
        for tiro in tiratori_tca[tag_utente]["risultati"]:
            tiri += f"**Tiro {counter}:** __{tiro}__\n"
            counter += 1

        if counter > 3:
            giocatore = app.get_users(utente).first_name
            tot_punti = sum(tiratori_tca[tag_utente]["risultati"])

            if tot_punti < 15:
                commento = "(un po' una merda)"
            elif tot_punti < 40:
                commento = "(meh)"
            elif tot_punti < 50:
                commento = "(incominciamo a ragionare)"
            elif tot_punti < 60:
                commento = "(bella giocata)"
            elif tot_punti < 75:
                commento = "(non vantarti, è solo culo)"
            elif tot_punti == 75:
                commento = "(hai barato ammettilo!)"
            else:
                commento = ""

            callback_query.edit_message_text(
                f"Tiri un' ultima __freccia potentissima__ verso il cielo superando i __confini dell'universo__ che "
                f"ti conferisce **{numero}** punti!\n\nBeh che dire **{giocatore}**, hai distrutto l'universo per "
                f"divertirti un po' ma nel mentre hai totalizzato **{tot_punti}** punti\n\n**__Questi sono stati i "
                f"tuoi tiri__** {commento}\n{tiri}\n**Totale:** {tot_punti} ")

            setta_scommessa(callback_query.from_user, "Tiro con l'arco",
                            tot_punti)

        else:
            if counter > 3:
                callback_query.edit_message_text(
                    f"Contano solo i primi 3 tiri!\nNon cheatare mai più o ban!\n\n**__Questi infatti sono stati i "
                    f"tuoi tiri__**\n{tiri} ")
            else:
                callback_query.edit_message_text(f"{frase}\n\n{tiri}",
                                                 reply_markup=keyboard)

        tiratori_tca[tag_utente]["tiro"] += 1

    elif "Cancella" in callback_query.data:
        utente = callback_query.data.split("|")[1]

        if callback_query.from_user.id != int(utente):
            callback_query.answer("Non si può più, F!")
            return

        callback_query.edit_message_text("Tiro annullato 😢")
Ejemplo n.º 20
0
async def anime_func(string, answers):
    json = (await
            anime_sauce(string.split(None,
                                     1)[1], ))['data'].get('Media', None)
    if json:
        msg = ('**{}** (`{}`)\n'
               '**Type**: {}\n'
               '**Status**: {}\n'
               '**Episodes**: {}\n'
               '**Duration**: {}'
               'Per Ep.\n**Score**: {}\n**Genres**: `').format(
                   json['title']['romaji'],
                   json['title']['native'],
                   json['format'],
                   json['status'],
                   json.get('episodes', 'N/A'),
                   json.get('duration', 'N/A'),
                   json['averageScore'],
               )
        for x in json['genres']:
            msg += f'{x}, '
        msg = msg[:-2] + '`\n'
        msg += '**Studios**: `'
        for x in json['studios']['nodes']:
            msg += f"{x['name']}, "
        msg = msg[:-2] + '`\n'
        info = json.get('siteUrl')
        trailer = json.get('trailer', None)
        if trailer:
            trailer_id = trailer.get('id', None)
            site = trailer.get('site', None)
            if site == 'youtube':
                trailer = 'https://youtu.be/' + trailer_id
        description = (json.get('description', 'N/A').replace(
            '<i>', '').replace('</i>', '').replace('<br>', ''))
        msg += shorten(description, info)
        image = f'https://img.anili.st/media/{json["id"]}'
        buttons = InlineKeyboard(row_width=2)
        if trailer:
            buttons.add(InlineKeyboardButton('Trailer 🎬', url=trailer), )
        buttons.add(
            InlineKeyboardButton('More Info', url=info),
            InlineKeyboardButton(
                'Add to Watchlist',
                callback_data=f'addfav_{json["title"]["romaji"]}',
            ),
        )
        if image:
            answers.append(
                InlineQueryResultPhoto(
                    caption=msg,
                    photo_url=image,
                    parse_mode='markdown',
                    title=f"{json['title']['romaji']}",
                    description=f"{json['format']}",
                    reply_markup=buttons,
                ), )
        else:
            answers.append(
                InlineQueryResultArticle(
                    title=f"{json['title']['romaji']}",
                    description=f"{json['averageScore']}",
                    input_message_content=InputTextMessageContent(
                        msg,
                        parse_mode='markdown',
                        disable_web_page_preview=True,
                    ),
                    reply_markup=buttons,
                ), )
Ejemplo n.º 21
0
async def note_func(string, client, query, answers):
    if len(string.split()) == 1:
        allnotes = notes_db.get_all_selfnotes_inline(query.from_user.id)
        if not allnotes:
            await client.answer_inline_query(
                query.id,
                results=answers,
                switch_pm_text='You dont have any notes!',
                switch_pm_parameter='help_inline',
            )
            return
        rng = min(len(list(allnotes)), 30)
        for x in range(rng):
            note = allnotes[list(allnotes)[x]]
            noteval = note['value']
            notetype = note['type']
            # notefile = note["file"]
            if notetype != Types.TEXT:
                continue
            note, button = parse_button(noteval)
            button = build_keyboard(button)
            answers.append(
                InlineQueryResultArticle(
                    title='Note #{}'.format(list(allnotes)[x]),
                    description=note,
                    input_message_content=InputTextMessageContent(note),
                    reply_markup=InlineKeyboardMarkup(button),
                ),
            )
        await client.answer_inline_query(
            query.id,
            results=answers,
            switch_pm_text='Yourself notes',
            switch_pm_parameter='help_inline',
        )
        return
    q = string.split(None, 1)
    notetag = q[1]
    noteval = notes_db.get_selfnote(query.from_user.id, notetag)
    if not noteval:
        await client.answer_inline_query(
            query.id,
            results=answers,
            switch_pm_text='Note not found!',
            switch_pm_parameter='help_inline',
        )
        return
    note, button = parse_button(noteval.get('value'))
    button = build_keyboard(button)
    answers.append(
        InlineQueryResultArticle(
            title=f'Note #{notetag}',
            description=note,
            input_message_content=InputTextMessageContent(note),
            reply_markup=InlineKeyboardMarkup(button),
        ),
    )
    try:
        await client.answer_inline_query(
            query.id,
            results=answers,
            cache_time=5,
        )
    except errors.exceptions.bad_request_400.MessageEmpty:
        exc_type, exc_obj, exc_tb = sys.exc_info()
        log_errors = traceback.format_exception(
            etype=exc_type, value=exc_obj, tb=exc_tb,
        )
        button = InlineKeyboard(row_width=1)
        button.add(
            InlineKeyboardButton(
                '🐞 Report bugs',
                callback_data='report_errors',
            ),
        )
        text = 'An error has accured!\n\n```{}```\n'.format(
            ''.join(log_errors),
        )
        await setbot.send_message(Owner, text, reply_markup=button)