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'])
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)
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
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)
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]}')