Ejemplo n.º 1
0
def handle(msg):
    if 'text' in msg:
        if '/spoti' in msg['text']:
            spoti(msg, bot)
        elif msg['text'] == '/start':
            teclado = InlineKeyboardMarkup(
                inline_keyboard=[[dict(text='Pesquisar letras', switch_inline_query_current_chat='')]])
            bot.sendMessage(msg['chat']['id'],
                            'Pesquise por letras de músicas direto do Telegram :D\n\n'
                            '   - _Para mais informaçoes, use_ /help\n\n'
                            'Vamos iniciar? Comece testando pelo botão abaixo:',
                            reply_to_message_id=msg['message_id'],
                            reply_markup=teclado,
                            parse_mode='markdown')
        elif msg['text'] == '/help':
            bot.sendMessage(msg['chat']['id'],
                            'Este bot exibe letra de músicas de acordo com sua pesquisa, utilizando o letras.mus.br.\n\n'
                            'Você pode pesquisar atravez do modo inline (@lyricspyrobot <música>), ou até mesmo ver a letra da música que está tocando em seu Spotify atravez do spoti (necessitalogin) :D\n\n'
                            'Os seguintes comandos estão disponiveis:\n'
                            '   • /letra <música> (pesquisa determinada letra)\n'
                            '   • /spoti (mostra a música atual tocando ~não necessita premium~)\n\n'
                            'Em caso de dúvida, entre em contato pelo @AmanoSupport ou por nosso chat @AmanoChat.\n'
                            '- Novidades e atualizações serão postadas no canal @AmanoTeam.',reply_to_message_id=msg['message_id'])
        elif msg['text'].split()[0] == '/letras':
            text = msg['text'].split()[1]
            if text == '':
                bot.sendMessage(msg['chat']['id'], '**Uso:** /letra <nome da música>',
                                reply_to_message_id=msg['message_id'],
                                parse_mode='markdown')
            else:
                res = ['{}: <a href="{}">{} - {}</a>'.format(num + 1, i['link'], i["musica"], i["autor"]) for num, i in
                       enumerate(lyricspy.auto(text, 30))] or "Nenhum resultado foi encontrado"
                bot.sendMessage(msg['chat']['id'], '\n'.join(res), 'HTML', reply_to_message_id=msg['message_id'],
                                disable_web_page_preview=True)
        elif msg['text'].split()[0] == '/letra':
            text = msg['text'][7:]
            if not text:
                return bot.sendMessage(msg['chat']['id'], '**Uso:** /letra <nome da música>',
                                       reply_to_message_id=msg['message_id'],
                                       parse_mode='markdown')
            elif re.match(r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br/).+', text):
                a = lyricspy.letra(text)
            else:
                a = lyricspy.auto(text)[0]
            if a.get('letra'):
                mik = re.split(r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br)', a["link"])[-1]
                teclado = InlineKeyboardMarkup(inline_keyboard=[
                    [dict(text='Telegra.ph', callback_data=f'tell-{mik}|{msg["from"]["id"]}')]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[
                        [dict(text='Telegra.ph', callback_data=f'tell-{mik}|{msg["from"]["id"]}')] +
                        [dict(text='Tradução', callback_data=f'tr_{mik}|{msg["from"]["id"]}')]])
                bot.sendMessage(msg['chat']['id'],
                                '[{} - {}]({})\n{}'.format(a["musica"], a["autor"], a['link'], a['letra']),
                                reply_to_message_id=msg['message_id'], parse_mode='markdown',
                                disable_web_page_preview=True, reply_markup=teclado)
            else:
                bot.sendMessage(msg['chat']['id'], "Letra não encontrada :(",
                                reply_to_message_id=msg['message_id'])
Ejemplo n.º 2
0
def inline_query(msg):
    if msg['query'] == '':
        db = dbc()
        if str(msg['from']['id']) in db:
            articles = inline(msg, bot)
        else:
            articles = []
        bot.answerInlineQuery(msg['id'], results=articles, is_personal=True, cache_time=0)
    elif msg['query'] != '':
        db = dbc()
        if str(msg['from']['id']) in db:
            articles = inline(msg, bot)
        else:
            articles = []
        result = lyricspy.auto(msg['query'])
        for a in result:
            teclado = InlineKeyboardMarkup(inline_keyboard=[
                [dict(text='Aguarde...', callback_data='a')]
            ])
            articles.append(InlineQueryResultArticle(
                id=a['link'],
                title=f'{a["musica"]} - {a["autor"]}',
                thumb_url='https://piics.ml/i/010.png',
                input_message_content=InputTextMessageContent(
                    message_text='Aguarde...',
                    parse_mode='markdown', disable_web_page_preview=True),
                reply_markup=teclado)
            )
        if not articles:
            articles = [InlineQueryResultArticle(id='a', title=f'sem resultado',
                                                 input_message_content=InputTextMessageContent(
                                                     message_text=f"sem resultado para {msg['query']}"))]
        bot.answerInlineQuery(msg['id'], results=articles, is_personal=True, cache_time=0)
Ejemplo n.º 3
0
def inline(msg, bot):
    db = dbc()
    a = get_current_playing(str(msg['from']['id']), db)
    if a is None:
        articles = [
            InlineQueryResultArticle(
                id='a',
                title='spoti: Você não está tocando nada',
                thumb_url='https://piics.ml/amn/lpy/spoti.png',
                input_message_content=InputTextMessageContent(
                    message_text="Você não está tocando nada"))
        ]
    else:
        a = lyricspy.auto(
            f"{a['item']['artists'][0]['name']} {a['item']['name']}",
            limit=1)[0]
        teclado = InlineKeyboardMarkup(
            inline_keyboard=[[dict(text='Aguarde...', callback_data='a')]])
        articles = [
            InlineQueryResultArticle(
                id=a['link'],
                thumb_url='https://piics.ml/amn/lpy/spoti.png',
                title=f'spoti: {a["musica"]} - {a["autor"]}',
                input_message_content=InputTextMessageContent(
                    message_text='Aguarde...',
                    parse_mode='markdown',
                    disable_web_page_preview=True),
                reply_markup=teclado)
        ]
    return articles
Ejemplo n.º 4
0
def handle(msg):
    if 'text' in msg:
        if msg['text'] == '/start':
            teclado = InlineKeyboardMarkup(inline_keyboard=[[
                dict(text='Pesquisar letras',
                     switch_inline_query_current_chat='')
            ]])
            bot.sendMessage(
                msg['chat']['id'],
                f'Pesquise por letras de músicas direto do telegram\n\nTeste apertando o botão abaixo:',
                reply_to_message_id=msg['message_id'],
                reply_markup=teclado)
        elif msg['text'].split()[0] == '/letras':
            text = msg['text'].split()[1]
            if text == '':
                bot.sendMessage(msg['chat']['id'],
                                'uso:\n/letras nome da musica',
                                reply_to_message_id=msg['message_id'])
            else:
                res = [
                    '{}: <a href="{}">{} - {}</a>'.format(
                        num + 1, i['link'], i["musica"], i["autor"])
                    for num, i in enumerate(lyricspy.auto(text, 30))
                ] or "Nenhum resultado foi encontrado"
                bot.sendMessage(msg['chat']['id'],
                                '\n'.join(res),
                                'HTML',
                                reply_to_message_id=msg['message_id'],
                                disable_web_page_preview=True)
        elif msg['text'].split()[0] == '/letra':
            text = msg['text'][7:]
            if text == '':
                bot.sendMessage(msg['chat']['id'],
                                'uso:\n/letra nome ou url da letra',
                                reply_to_message_id=msg['message_id'])
            elif re.match(
                    r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br/).+',
                    text):
                print('tem')
                a = lyricspy.letra(text)
                if a:
                    mik = re.split(
                        r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br)',
                        a["link"])[-1]
                    print(mik)
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Telegra.ph',
                             callback_data=f'tell-{mik}|{msg["from"]["id"]}')
                    ]])
                    if a.get('traducao'):
                        teclado = InlineKeyboardMarkup(inline_keyboard=[[
                            dict(
                                text='Telegra.ph',
                                callback_data=f'tell-{mik}|{msg["from"]["id"]}'
                            )
                        ] + [
                            dict(text='Tradução',
                                 callback_data=f'tr_{mik}|{msg["from"]["id"]}')
                        ]])
                    print(teclado)
                    bot.sendMessage(msg['chat']['id'],
                                    '[{} - {}]({})\n{}'.format(
                                        a["musica"], a["autor"], a['link'],
                                        a['letra']),
                                    reply_to_message_id=msg['message_id'],
                                    parse_mode='markdown',
                                    disable_web_page_preview=True,
                                    reply_markup=teclado)
            else:
                print('não tem')
                a = lyricspy.auto(text)[0]
                if a.get('letra'):
                    mik = re.split(
                        r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br)',
                        a["link"])[-1]
                    print(mik)
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Telegra.ph',
                             callback_data=f'tell-{mik}|{msg["from"]["id"]}')
                    ]])
                    if a.get('traducao'):
                        teclado = InlineKeyboardMarkup(inline_keyboard=[[
                            dict(
                                text='Telegra.ph',
                                callback_data=f'tell-{mik}|{msg["from"]["id"]}'
                            )
                        ] + [
                            dict(text='Tradução',
                                 callback_data=f'tr_{mik}|{msg["from"]["id"]}')
                        ]])
                    print(teclado)
                    bot.sendMessage(msg['chat']['id'],
                                    '[{} - {}]({})\n{}'.format(
                                        a["musica"], a["autor"], a['link'],
                                        a['letra']),
                                    reply_to_message_id=msg['message_id'],
                                    parse_mode='markdown',
                                    disable_web_page_preview=True,
                                    reply_markup=teclado)

    elif 'data' in msg:
        if 'tr_' in msg['data']:
            if msg["from"]["id"] == int(msg['data'].split('|')[1]):
                link = msg['data'][3:].split("|")[0]
                a = lyricspy.letra('https://m.letras.mus.br' + link)
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Telegra.ph',
                         callback_data=f'tell_{link}|{msg["from"]["id"]}')
                ]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Telegra.ph',
                             callback_data=f'tell_{link}|{msg["from"]["id"]}')
                    ] + [
                        dict(text='Original',
                             callback_data=
                             f"tr-{link}|{int(msg['data'].split('|')[1])}")
                    ]])
                if 'inline_message_id' in msg:
                    bot.editMessageText(msg['inline_message_id'],
                                        '[{} - {}]({})\n{}'.format(
                                            a['musica'], a['autor'], a['link'],
                                            a['traducao']),
                                        parse_mode='markdown',
                                        disable_web_page_preview=True,
                                        reply_markup=teclado)
                else:
                    bot.editMessageText(
                        (msg['message']['chat']['id'],
                         msg['message']['message_id']),
                        '[{} - {}]({})\n{}'.format(a['musica'], a['autor'],
                                                   a['link'], a['traducao']),
                        parse_mode='markdown',
                        disable_web_page_preview=True,
                        reply_markup=teclado)
            else:
                bot.answerCallbackQuery(
                    msg['id'],
                    text='Você não pode editar esta mensagem',
                    show_alert=True)
        if 'tell-' in msg['data']:
            if msg["from"]["id"] == int(msg['data'].split('|')[1]):
                link = msg['data'][5:].split("|")[0]
                a = lyricspy.letra('https://m.letras.mus.br' + link)
                response = send_te(a, a['letra'])
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Texto',
                         callback_data=
                         f"tr-{link}|{int(msg['data'].split('|')[1])}")
                ]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Texto',
                             callback_data=
                             f"tr-{link}|{int(msg['data'].split('|')[1])}")
                    ] + [
                        dict(text='Traducão',
                             callback_data=
                             f"tell_{link}|{int(msg['data'].split('|')[1])}")
                    ]])
                if 'inline_message_id' in msg:
                    bot.editMessageText(
                        msg['inline_message_id'],
                        f'https://telegra.ph/{response["path"]}',
                        reply_markup=teclado)
                else:
                    bot.editMessageText(
                        (msg['message']['chat']['id'],
                         msg['message']['message_id']),
                        f'https://telegra.ph/{response["path"]}',
                        reply_markup=teclado)
            else:
                bot.answerCallbackQuery(
                    msg['id'],
                    text='Você não pode editar esta mensagem',
                    show_alert=True)
        if 'tell_' in msg['data']:
            if msg["from"]["id"] == int(msg['data'].split('|')[1]):
                link = msg['data'][5:].split("|")[0]
                a = lyricspy.letra('https://m.letras.mus.br' + link)
                response = send_te(a, a['traducao'])
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Texto',
                         callback_data=
                         f"tr_{link}|{int(msg['data'].split('|')[1])}")
                ]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Texto',
                             callback_data=
                             f"tr_{link}|{int(msg['data'].split('|')[1])}")
                    ] + [
                        dict(text='Original',
                             callback_data=
                             f"tell-{link}|{int(msg['data'].split('|')[1])}")
                    ]])
                if 'inline_message_id' in msg:
                    bot.editMessageText(
                        msg['inline_message_id'],
                        f'https://telegra.ph/{response["path"]}',
                        reply_markup=teclado)
                else:
                    bot.editMessageText(
                        (msg['message']['chat']['id'],
                         msg['message']['message_id']),
                        f'https://telegra.ph/{response["path"]}',
                        reply_markup=teclado)
            else:
                bot.answerCallbackQuery(
                    msg['id'],
                    text='Você não pode editar esta mensagem',
                    show_alert=True)
        if 'tr-' in msg['data']:
            if msg["from"]["id"] == int(msg['data'].split('|')[1]):
                link = msg['data'][3:].split("|")[0]
                a = lyricspy.letra('https://m.letras.mus.br' + link)
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Telegra.ph',
                         callback_data=f'tell-{link}|{msg["from"]["id"]}')
                ]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Telegra.ph',
                             callback_data=f'tell-{link}|{msg["from"]["id"]}')
                    ] + [
                        dict(text='Tradução',
                             callback_data=f'tr_{link}|{msg["from"]["id"]}')
                    ]])
                if 'inline_message_id' in msg:
                    bot.editMessageText(msg['inline_message_id'],
                                        '[{} - {}]({})\n{}'.format(
                                            a['musica'], a['autor'], a['link'],
                                            a['letra']),
                                        parse_mode='markdown',
                                        disable_web_page_preview=True,
                                        reply_markup=teclado)
                else:
                    bot.editMessageText(
                        (msg['message']['chat']['id'],
                         msg['message']['message_id']),
                        '[{} - {}]({})\n{}'.format(a['musica'], a['autor'],
                                                   a['link'], a['letra']),
                        parse_mode='markdown',
                        disable_web_page_preview=True,
                        reply_markup=teclado)
            else:
                bot.answerCallbackQuery(
                    msg['id'],
                    text='Você não pode editar esta mensagem',
                    show_alert=True)
    elif 'query' in msg:
        if msg.get('inline_message_id'):
            teclado = None
            try:
                a = lyricspy.letra(msg['result_id'])
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Telegra.ph',
                         callback_data=f'tell-{a["link"]}|{msg["from"]["id"]}')
                ]])
                if a.get('traducao'):
                    teclado = InlineKeyboardMarkup(inline_keyboard=[[
                        dict(text='Telegra.ph',
                             callback_data=
                             f'tell-{a["link"]}|{msg["from"]["id"]}')
                    ] + [
                        dict(
                            text='Tradução',
                            callback_data=f'tr_{a["link"]}|{msg["from"]["id"]}'
                        )
                    ]])
                bot.editMessageText(msg['inline_message_id'],
                                    '[{} - {}]({})\n{}'.format(
                                        a['musica'], a['autor'], a['link'],
                                        a['letra']),
                                    parse_mode='markdown',
                                    disable_web_page_preview=True,
                                    reply_markup=teclado)
            except Exception as e:
                print(e)
                bot.editMessageText(msg['inline_message_id'],
                                    'ocorreu um erro ao exibir a letra')
        elif msg['query'] != '':
            articles = []
            result = lyricspy.auto(msg['query'])
            for a in result:
                teclado = InlineKeyboardMarkup(inline_keyboard=[[
                    dict(text='Aguarde...', callback_data='a')
                ]])
                articles.append(
                    InlineQueryResultArticle(
                        id=a['link'],
                        title=f'{a["musica"]} - {a["autor"]}',
                        input_message_content=InputTextMessageContent(
                            message_text='Aguarde...',
                            parse_mode='markdown',
                            disable_web_page_preview=True),
                        reply_markup=teclado))
            if not articles:
                articles = [
                    InlineQueryResultArticle(
                        id='abcde',
                        title=f'sem resultado',
                        input_message_content=InputTextMessageContent(
                            message_text=f"sem resultado para {msg['query']}"))
                ]
            bot.answerInlineQuery(msg['id'],
                                  results=articles,
                                  is_personal=True)
Ejemplo n.º 5
0
def spoti(msg, bot):
    db = dbc()
    if msg['text'] == '/spoti':
        if not str(msg['from']['id']) in db:
            kb = InlineKeyboardMarkup(inline_keyboard=[[
                dict(text='Login', url='https://xn--f77h6a.ml/1ec28a')
            ]])
            bot.sendMessage(
                msg['chat']['id'],
                'Use o botão abaixo e faça login. Em seguida, mande o link após o comando /spoti.\n\n'
                '**Ex.:** ```/spoti https://lyricspy.ml/go?code=AQCan-Nd1Mk2qToUGsIopwV_yOm```',
                parse_mode='markdown',
                reply_to_message_id=msg['message_id'],
                reply_markup=kb)
        else:
            a = get_current_playing(str(msg['from']['id']), db)
            if a is None:
                bot.sendMessage(
                    msg['chat']['id'],
                    'No momento não há nada tocando. Que tal dar um _play_ em seu Spotify?',
                    parse_mode='markdown',
                    reply_to_message_id=msg['message_id'])
            else:
                sent = bot.sendMessage(
                    msg['chat']['id'],
                    f"🎶 {a['item']['artists'][0]['name']} - {a['item']['name']}"
                )
                a = lyricspy.auto(
                    f"{a['item']['artists'][0]['name']} {a['item']['name']}",
                    limit=1)
                if a:
                    a = a[0]
                    mik = re.split(
                        r'^(https?://)?(letras\.mus.br/|(m\.|www\.)?letras\.mus\.br)',
                        a["link"])[-1]
                    text = '[{} - {}]({})\n{}'.format(a["musica"], a["autor"],
                                                      a['link'], a['letra'])
                    if len(text) > 4096:
                        text = send_te(a, a['letra'])['url']
                        if a.get('traducao'):
                            teclado = InlineKeyboardMarkup(inline_keyboard=[[
                                dict(text='Traducão',
                                     callback_data=
                                     f"tell_{mik}|{msg['from']['id']}")
                            ]])
                    else:
                        teclado = InlineKeyboardMarkup(inline_keyboard=[[
                            dict(
                                text='Telegra.ph',
                                callback_data=f'tell-{mik}|{msg["from"]["id"]}'
                            )
                        ]])
                        if a.get('traducao'):
                            teclado = InlineKeyboardMarkup(inline_keyboard=[[
                                dict(text='Telegra.ph',
                                     callback_data=
                                     f'tell-{mik}|{msg["from"]["id"]}')
                            ] + [
                                dict(text='Tradução',
                                     callback_data=
                                     f'tr_{mik}|{msg["from"]["id"]}')
                            ]])
                    print(text)
                    bot.sendMessage(msg['chat']['id'],
                                    text,
                                    reply_to_message_id=msg['message_id'],
                                    parse_mode='markdown',
                                    disable_web_page_preview=True,
                                    reply_markup=teclado)
                else:
                    bot.sendMessage(msg['chat']['id'],
                                    "Letra não encontrada :(",
                                    reply_to_message_id=sent['message_id'])
    else:
        text = msg['text'][7:]
        if 'lyricspy.ml' in text:
            access_code = text.split('code=')[1]
            res = get_token(msg['from']['id'], access_code, db)
            if res[0]:
                bot.sendMessage(msg['chat']['id'], f'ok')
            else:
                bot.sendMessage(msg['chat']['id'],
                                f'ocorreu um erro:\n{res[1]}')