Телеграмм бот отправляет одну и ту же фотографию через random.choice, хотя в списке, много фото. Как это пофиксить?
Всем привет, решил добавить в бота функцию отправки рандомного сообщения, но почему-то при запуске бота и выполнении команды, приходит одна и та же фотография. Погуглив, нашёл код, который всё фиксит, но не помогло (библиотеки установлены). При перезапуске бота, он выбирает другую фотку и отправляет только её. Подскажите, что можно решить с этим:
picts = ['1', '2', '3', '4', '5', '6', '7', '8']
tak = random.choice(picts)
random_message = lambda: random.choice(picts)
@bot.message_handler(content_types=['text'])
def send_text(message):
if message.text.lower() == 'давай':
bot.send_photo(message.chat.id, tak)
Ответы (1 шт):
Автор решения: Klim
→ Ссылка
Вам нужно вызывать выбор рандома внутри функции. Так как сейчас у вас единожды выбирается рандом и дальше одно и тоже возвращает.
Псевдокод для запуска из консоли.
import random
picts = ['1', '2', '3', '4', '5', '6', '7', '8']
def send_text(message):
if message == 'давай':
tak = random.choice(picts)
print(tak)
send_text('давай')
send_text('давай')
send_text('давай')
>>> 3
>>> 2
>>> 7