Задать вопрос
@fright002

Как отправить случайную песню с помощью бота в телеграм?

elif message.text == 'Случайная песня':
			files = os.listdir('songs1')

			for x in files:
				list = [x]
				song = random.choice(list)

			bot.send_audio(message.chat.id, song)

В итоге ошибка
(__init__.py:688 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: invalid file HTTP URL specified: Wrong URL host"
  • Вопрос задан
  • 454 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
elif message.text == 'Случайная песня':
      files = os.listdir('songs1')
      list = []
      for x in files:
            list.append(x)
      song = random.choice(list)
      bot.send_audio(message.chat.id, song)

ну или так:
elif message.text == 'Случайная песня':
      song = random.choice([x for x in os.listdir('songs1')])
      bot.send_audio(message.chat.id, song)

Учтите что в папке songs1 должны быть только песни, даже папок не должно быть.
Ответ написан
Комментировать
@AlbertForest
Как минимум стоит указать полный путь к файлу
bot.send_audio(message.chat.id, f'songs1/{song}')
И обратить внимание на предыдущий ответ. Иначе цикл for будет работать не так как вы ожидаете
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
Во-первых неправильно построен цикл, во-вторых listdir возвращает только название файла, даже не полный путь к нему, а отправить нужно сам объект

elif message.text == 'Случайная песня':
    song_path = os.path.join(os.getcwd(), "songs1", random.choice(os.listdir("songs1")))
    bot.send_audio(message.chat.id, open(song_path, "rb"))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы