телеграм бот на aiogram и telebot не ждет, пока пользователь введет данные

Я хочу, чтобы пользователь ввел число - допустим это обычный калькулятор(1 2 3 4 - это операции сложения, вычитания, умножения, деления), затем он должен ввести первое число, потом второе, но данный код не работает(так же пытался с while, тоже что-то шло не так). Суть в том, что всегда выполняется только первая функция, потому что они обе имеют одинаковый content_types = ['text']

@bot.message_handler(content_types=['text'])
def a(message):
    @bot.message_handler(content_types=['text'])
    def b(message):
        ....

Можно ли как-то обустроить логику бота на aiogram или телебот, чтобы при вводе определенной команды бот входил в какой-то цикл и уже не реагировал на все, что вне его


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

Автор решения: Denis Rudnitskiy

Да. Вы можете воспользоваться методом:

bot.register_next_step_handler(message, func),

где func - функция, в которой будет выполняться определенная операция.

Пишите условие типа:

if message.text == 1:
    return bot.register_next_step_handler(message, func_add)

Затем пользователь введет число, и оно будет передано в функцию func_add. А там уже следует модифицировать код - зависит от вас :)

Либо более альтернативный вариант - отслеживайте, какой знак передал пользователь, и выполняйте функцию-обработчик.

→ Ссылка