Новый random при каждом обращении к боту
В тексте файла - URL-ссылки. Бот успешно отправляет в ответ рандомную ссылку из документа, но при повторном вызове команды "/start" ссылка не меняется. Как создать цикл, который будет постоянно менять рандомное значение при вызове команды ?
import telebot
import random
bot = telebot.TeleBot('0000000000:0000000000PFlZqtPNZtPF-oJYXkehL_Ijk')
choicefile=open("files.txt")
linelist=[]
for line in choicefile:
linelist.append(line)
choice=random.choice(linelist)
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, choice)
if __name__ == '__main__':
bot.polling()
Ответы (2 шт):
Автор решения: Максим
→ Ссылка
Строку choice=random.choice(linelist)
Необходимо перенести внутрь функции start_message
Ответ дан от пользователя @insolor из комментариев.
Я бы также порекомендовал занести код в функцию и обращаться к ей при необходимости, чтобы не засорять функцию ответа на сообщение '/start':
choice = ''
@bot.message_handler(commands=['start'])
def start_message(message):
global choice <------ Позволяет изменить переменную и прочитать её содержимое
randie(message) <------ Обращение к функции, обязательно передаём параметр message
bot.send_message(message.chat.id, f'{choice}') <------ Используем форматирование
def randie(message): <------ Имя функции может быть любым
global choice <------ Здесь всё также
choicefile=open("files.txt")
linelist=[]
for line in choicefile:
linelist.append(line)
choice=random.choice(linelist)