Перехват действий с помощью команды в Telegram-боте[Закрыто]
При выполнении команды "/start" пользователь должен ввести свой логин, но если он вдруг передумает, то предусмотрена команда "/cancel", которая, в теории, "должна отменять любые действия"(на самом деле она просто должна обрабатываться хэндлером и вызываться как обычно), но на практике она не работает.
Код:
@bot.message_handler(commands=['start'])
def start(message):
msg = bot.send_message(message.chat.id, "Введите Ваш логин")
bot.register_next_step_handler(msg, new_function)
def new_function(message):
bot.send_message(message.chat.id, f"Ваш логин: {message.text}")
@bot.message_handler(commands=['cancel'])
def cancel(message):
bot.send_message(message.chat.id, "Действие отменено")
Как бот работает сейчас:
Ответы (1 шт):
Автор решения: Vasily
→ Ссылка
Дело в том, что после /start любое сообщение будет перехвачено и описано как текст, я предлагаю немного костыльный, но рабочий вариант - проверить саму строку:
@bot.message_handler(commands=['start'])
def start(message):
msg = bot.send_message(message.chat.id, "Введите Ваш логин")
bot.register_next_step_handler(msg, new_function)
def new_function(message):
if message.text == "/cancel":
bot.send_message(message.chat.id, "Действие отменено")
else:
bot.send_message(message.chat.id, f"Ваш логин:{message.text}")
