@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)
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Очевидно, внести код генерации случайного текста внутрь обработчика.
Снаружи можно оставить только неизменные части - например, всё что до работы с random.choice().
К слову, а накой огурец ты подключаешь сюда numpy? Чем тебя встроенный random не устроил?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект