@dddaaammmeee

Как после вывода рандомного списка пересгенерировать его заново?

Как сейчас:
Идет генерация текста, вывод по запросу бота пользователю. Но при очередном запросе пользователя на нажатие обновление текста не происходит.
Как сделать так, чтобы каждое нажатие кнопки(Запрос пользователя) обновлял генератор текста и выводил новый?

import telebot
from telebot import types
import numpy as np

text = open('text.txt', encoding='utf-8').read()

foundation = text.split()

def make_pairs(foundation):
    for i in range(len(foundation) - 1):
        yield (foundation[i], foundation[i + 1])

pairs = make_pairs(foundation)

words = {}

for word_1, word_2 in pairs:
    if word_1 in words.keys():
        words[word_1].append(word_2)
    else:
        words[word_1] = [word_2]

first_word = np.random.choice(foundation)

while first_word.islower():
    first_word = np.random.choice(foundation)

chain = [first_word]

n_words = 100

for i in range(n_words):
    chain.append(np.random.choice(words[chain[-1]]))

print(' '.join(chain))

TOKEN = 'Здесь должен быть токен'

bot = telebot.TeleBot(TOKEN)
 
@bot.message_handler(commands=['start'])
def welcome(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('Кнопка')
 
    markup.add(item1)
 
    bot.send_message(message.chat.id, 'Привет <3'.format(message.from_user, bot.get_me()),
        parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def bot_message(message):
    if message.chat.type == 'private':
        if message.text == 'Кнопка':
            bot.send_message(message.chat.id,(' '.join(chain)))
     
bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Очевидно, внести код генерации случайного текста внутрь обработчика.
Снаружи можно оставить только неизменные части - например, всё что до работы с random.choice().
К слову, а накой огурец ты подключаешь сюда numpy? Чем тебя встроенный random не устроил?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
15 июн. 2024, в 23:20
50000 руб./за проект
15 июн. 2024, в 23:15
4000 руб./за проект
15 июн. 2024, в 23:01
4400 руб./за проект