Проверка ответа в Telegram (Python)

Пытаюсь написать телеграм бота на Python, задача у него весьма простая, он должен рандомно сгенерировать пример из таблицы умножения а затем дождаться ответа пользователя, сравнить его с переменной в которой хранится ответ и вывести на экран правильно или нет. Так вот у меня бот не хочет ждать ответа, а сразу говорит что все не правильно, если я ставлю временную задержку, скажем на 3 секунды, и ввожу правильный ответ, то он тоже игнорируется, и вместо неправильно, бот говорит что не знает что сказать. Получается если я что-то вбиваю руками,то он выходит из цикла? Короче я запутался, второй день сижу с этим вопросом. Подскажите пожалуйста что нужно исправить? Я занимаюсь изучением самостоятельно, знания не такие глубокие, за код сильно не пинайте :) Спасибо.

Вот кусок кода, где происходит процесс

 for i in start:
    message.text()
    if message.text == z:
         i=0
         while i<10:
                x = random.randint(2,9)
                y = random.randint(2,9)
                z=x*y
                bot.send_message(message.chat.id, str(x) + ' * ' + str(y) + ' = ?')                    
                i=i+1
                if z == message.text:
                    bot.send_message(message.chat.id, 'Молодец!')      
                else:
                    bot.send_message(message.chat.id, 'Не правильно... ')

Ответы (3 шт):

Автор решения: Assur

Сочинил такой вот пример для умножения двух чисел с использованием telegram-бота. Он рабочий, но конечно сделан на коленке. В частности, работает без использования цикла.

import telebot
from random import random, randint

global x
global y
global z

x = randint(2,9)
y = randint(2,9)
z = x * y

bot = telebot.TeleBot('токен')

@bot.message_handler(commands=['start'])



def start_message(message):
    bot.send_message(message.chat.id, 'Умножение двух чисел: '+str(x) + ' * ' + str(y) + ' = ?')


@bot.message_handler(content_types=['text'])


def send_text(message):
    if message.text == str(z):
        bot.send_message(message.chat.id, 'Молодец! ')
    elif message.text != str(z):
        bot.send_message(message.chat.id, 'Не правильно ...')

bot.polling()      
→ Ссылка
Автор решения: Руслан

Я переделал предложенный @Assur вариант (за что ему спасибо!) и он уже вполне работоспособен :)

    import telebot
    from random import random, randint

    x = 0
    y = 0
    z = 0

    bot = telebot.TeleBot('ВашТокен')

    @bot.message_handler(commands=['start'])
    def start_message(message):
        global x
        global y
        global z

        x = randint(2,9)
        y = randint(2,9)
        z = x * y
        bot.send_message(message.chat.id, 'Умножение двух чисел: '+str(x) + ' * ' + str(y) + ' = ?')

    @bot.message_handler(content_types=['text'])
    def send_text(message):
        global z
        if message.text == str(z):
            bot.send_sticker(message.chat.id, 'CAACAgIAAxkBAAEE6WRimyYQMdv9pVvzi0gCLvwg-XIdYQACHQADwDZPE17YptxBPd5IJAQ')
        elif message.text != str(z):
            bot.send_sticker(message.chat.id, 'CAACAgIAAxkBAAEE6WhimyYxcd7CoWjbAtcenKG9QnWDgQACIAADwDZPE_QPK7o-X_TPJAQ')
            bot.send_message(message.chat.id, str(x) + ' * ' + str(y) + ' = ' + str(z))

    bot.polling()
→ Ссылка
Автор решения: cool rage

Используя библиотеку random и не такое можно творить.

imports

token()

#словарь для хранения ответов
bot.user_data = {}

# функция генерации примера
def generate_example():
    a = random.randint(1, 9)
    b = random.randint(1, 9)
    example = f"{a} x {b} = "
    answer = a * b
    return example, answer

#обработчик команды старт
@bot.message_handler(commands=['start'])
def handle_start(message):
    example, answer = generate_example()
    bot.user_data[message.chat.id] = answer
    bot.send_message(message.chat.id, example)

#обработчик текстовых сообщений
@bot.message_handler(content_types=['text'])
def handle_text(message):
    user_answer = message.text
    answer = bot.user_data.get(message.chat.id)
    if user_answer == str(answer):
        bot.send_message(message.chat.id, "Правильно!")
    else:
        bot.send_message(message.chat.id, "Неправильно. Попробуй еще раз.")
        example, answer = generate_example()
        bot.user_data[message.chat.id] = answer
        bot.send_message(message.chat.id, example)

→ Ссылка