- 5,732
- 4,026
всем ку.пытаюсь сделать бота для тг,но в инлайн режиме при упоминании бота происходит бесконечная загрузка его ответа.с чем это может быть связано? в лс если его упомянуть он все нормально скажет(не инлайн режим имею ввиду) (на говнокод не обращайте внимание это нормально)
Python:
import asyncio
from aiogram import Bot, Dispatcher, types, executor
import vk_api
telegram_token = 'YOUR_TELEGRAM_BOT_TOKEN'
vk_token = 'YOUR_VK_API_TOKEN'
user_id = 'YOUR_VK_USER_ID'
bot = Bot(token=telegram_token)
dp = Dispatcher(bot)
vk_session = vk_api.VkApi(token=vk_token)
vk = vk_session.get_api()
@dp.message_handler()
async def handle_message(message: types.Message):
if '@nowplayvk_bot' in message.text:
response = vk.status.get(user_id=user_id)
status = response['text']
if 'audio' in response:
audio = response['audio']
artist = audio['artist']
title = audio['title']
duration = audio['duration']
minutes = duration // 60
seconds = duration % 60
duration_formatted = f"{minutes}:{seconds:02}"
response_message = f"Ты слушаешь сейчас: {artist} - {title} ({duration_formatted})"
else:
response_message = "Сейчас ты не слушаешь музыку в VK."
await message.reply(response_message)
@dp.inline_handler()
async def handle_inline_query(inline_query: types.InlineQuery):
if '@nowplayvk_bot' in inline_query.query:
response = vk.status.get(user_id=user_id)
status = response['text']
if 'audio' in response:
audio = response['audio']
artist = audio['artist']
title = audio['title']
duration = audio['duration']
minutes = duration // 60
seconds = duration % 60
duration_formatted = f"{minutes}:{seconds:02}"
response_message = f"Ты слушаешь сейчас: {artist} - {title} ({duration_formatted})"
result_id = '1'
title = f"Текущий трек: {artist} - {title}"
input_message_content = types.InputTextMessageContent(response_message)
result = types.InlineQueryResultArticle(
id=result_id,
title=title,
input_message_content=input_message_content
)
await bot.answer_inline_query(inline_query.id, results=[result])
async def on_startup(dp):
await bot.send_message(chat_id='YOUR_CHAT_ID', text='Бот запущен')
if __name__ == '__main__':
dp.register_inline_handler(handle_inline_query)
executor.start_polling(dp, on_startup=on_startup)
Последнее редактирование: