Как сделать, чтобы Telegram бот отправлял музыку на Python

Должен отправлять с помощью функции send_audio, но не отправляет. Может быть моя ошибка в функции open
где написал rb. Как должны открываться mp3 файлы?

(при запуске отображается клавиатура, но если нажимать на трек, не отправляет)

Вот код:

import telebot

from telebot import types

bot = telebot.TeleBot('')


@bot.message_handler(commands=['start'])
def welcome(message):

markup = types.ReplyKeyboardMarkup()
item1 = types.KeyboardButton("Music1")
item2 = types.KeyboardButton("Music2")
item3 = types.KeyboardButton("Music3")
markup.add(item1, item2, item3)

bot.send_message(message.chat.id, "Бла-бла".format(message.from_user, bot.get_me()), 
reply_markup=markup)
        

@bot.message_handler(commands=['text'])
def send_audio(user_id):
if message.chat.type == 'private':
    if message.text == 'Music1':
        audio = open('Бла-бла1.mp3', 'rb')
        bot.send_audio(chat.id, audio)

    elif message.text == 'Music2':
        audio = open('Бла-бла2.mp3', 'rb')
        bot.send_audio(chat.id, audio)

    elif message.text == 'Music3':
        audio = open('Бла-бла3.mp3', 'rb')
        bot.send_audio(chat.id, audio)

    else:
        bot.send_message(message.chat.id, 'Бла-бла')


    bot.polling(none_stop=True)

        

Ответы (1 шт):

Автор решения: Sadykhzadeh

Вы ошиблись в том, что вместо message.chat.id пишите chat.id.

....
    if message.text == 'Music1':
        audio = open('Бла-бла1.mp3', 'rb')
        bot.send_audio(message.chat.id, audio)

    elif message.text == 'Music2':
        audio = open('Бла-бла2.mp3', 'rb')
        bot.send_audio(message.chat.id, audio)

    elif message.text == 'Music3':
        audio = open('Бла-бла3.mp3', 'rb')
        bot.send_audio(message.chat.id, audio)
....

А вообще, советую Вам загрузить эти самые .mp3 файлы в Telegram и через какого-то нибудь бота сохраните его id и посылайте его при надобности отправить музыку - таким образом Вы облегчите работу и себе, и серверам Telegram :)

Как это сделать? Как бы сделал я:

  1. Открой бота @ShowJSONBot (или любого другого, который будет тебе возвращать JSON сообщения)
  2. Отправь ему .mp3 файл
  3. Всё, твой файл в Telegram! Бот тебе вернёт JSON, в котором ты найдёшь параметр file_unique_id

Этот file_unique_id и нужно будет отправлять так:

bot.send_audio(message.chat.id, 31279387129.....) 
→ Ссылка