Отказ от ответственности: я использую другую платформу, поэтому я дам вам ссылки на документацию Telegram Bot API и пример в curl
. Все ниже только пример; может быть много способов достичь вашей цели.
как мне составить меню?
Если вы хотите отправить меню, подобное вашему примеру изображения, используйте встроенную клавиатуру .
В основном меню здесь представляет собой InlineKeyboardMarkup
объект , который содержит массив InlineKeyboardButton
объектов . Каждая кнопка должна иметь 2 указанных свойства:
text
- это просто заголовок кнопки
callback_data
- это свойство содержит текстовые данные, которые позже будут использоваться ботом для определения, какая кнопка была нажата пользователем. Это зависит от вас, как хранить информацию в этой собственности. Обратите внимание, что размер этого свойства ограничен 64 байтами.
Таким образом, callback_data
может использоваться для идентификации конкретного файла .mp3
. Это похоже на id
кнопки и id
песни. Возможно, вам следует хранить ассоциации между путями файлов на вашем жестком диске (например) и их соответствующими id
. Бот должен быть в состоянии найти путь к файлу в этой базе данных с указанным id
, а затем найти файл на диске.
Наконец, когда ваше меню готово, отправьте его как свойство reply_markup
в sendMessage
метод .
Простой curl
Пример:
curl -v -H "Content-Type: application/json" \
-d '{"chat_id": <YOUR_USER_ID>, "text": "Choose the song:", "reply_markup": {"inline_keyboard": [[{"text": "song 1", "callback_data": "file78435675234"}],[{"text": "song 2", "callback_data": "file789231467982134"}],[{"text": "song 3", "callback_data": "file135423854423"}]]}}' \
https://api.telegram.org/bot<YOUR_BOT_ID>/sendMessage
как бот анализирует выбор пользователя?
Если вы используете встроенную клавиатуру из приведенного выше примера, бот может получить информацию о выборе пользователя из data
свойства CallbackQuery
объекта входящего обновления .
Поэтому, когда пользователь нажимает определенную кнопку в меню, бот получает 1) user_id
и 2) callback_data
этой кнопки.
С этой информацией бот сможет найти нужный файл .mp3
на диске и затем использовать sendAudio
метод , чтобы отправить этот файл пользователю.