InlineQuery и mp3 файл
Делаю бота на telebot и работаю с inline query.
Мне нужно, чтобы при нажатии кнопки выходила песня...
Всё что я нашёл в оф. документации тг: InlineQueryResultAudio, но проблема в том, что мне нужно слать именно файлом.
Также пытался при InlineQueryResultArticle изменять в input_message_content это: InputTextMessageContent на это: InputMediaAudio.
Это не то что бы не работало, но мне выходила ошибка 400, с текстом:
ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: can't parse inline query result: Input message content is not specified"
Что делать? В доках telebot-а я всё таки не нашёл ничего полезного...
Ответы (1 шт):
Первый способ - отправка трека по ссылке
Для этого случая требуется указать валидную ссылку на аудиофайл.
Если перейти по такой ссылке, то в вашем браузере должен отображаться проигрыватель наподобие такого:
Приведу простой пример, когда handler срабатывает при любом вводе текста.
import telebot
from telebot import types
bot = telebot.TeleBot('token')
@bot.inline_handler(func=lambda query: len(query.query) > 0)
def query_text(query):
inline_btn = types.InlineQueryResultAudio(
id='1', # уникальный идентификатор
audio_url='', # ваша ссылка на аудиофайл
title='Eisenmann',
performer='Unheilig'
)
bot.answer_inline_query(query.id, [inline_btn])
bot.polling(none_stop=True)
Второй способ - отправка уже сохранённого на серверах Telegram аудиофайла
Здесь еще проще. Достаточно передать уникальный id, и audio_file_id.
import telebot
from telebot import types
bot = telebot.TeleBot('token')
@bot.message_handler(content_types=['audio'])
def start(message):
print(message.audio.file_id) # для получения audio_file_id аудиозаписи
@bot.inline_handler(func=lambda query: len(query.query) > 0)
def query_text(query):
inline_btn = types.InlineQueryResultCachedAudio(
id='1',
audio_file_id='', # валидный file_id аудиофайла
)
bot.answer_inline_query(query.id, [inline_btn])
bot.polling(none_stop=True)
Выглядит это так:

