Делаю бота на python aiogram, столкнулся с проблемой. Сейчас во втором состоянии Task.problem условие if отрабатывается при двойном нажатии на кнопку (Интернет/Замки), как можно сделать так чтобы условие с первого раза создавало новое состояние Task.lock.set() или Task.internet.set()
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.utils import executor
logging.basicConfig(level=logging.INFO)
API_TOKEN = 'ключ'
bot = Bot(token=API_TOKEN)
number_task = 0
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
class Task(StatesGroup):
problem = State()
choose_problem = State()
internet = State()
lock = State()
@dp.message_handler(commands='start')
async def bot_start(message: types.Message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, selective=True)
markup.add("Первый выбор", "Второй выбор")
await Task.problem.set()
await message.answer("Выберите:", reply_markup=markup)
@dp.message_handler(state=Task.problem)
async def process_name(message: types.Message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, selective=True)
markup.add("Интернет", "Замки")
if message.text == "Интернет":
await Task.internet.set()
elif message.text == "Замки":
await Task.lock.set()
await message.answer("Что случилось", reply_markup=markup)
@dp.message_handler(text="Замки", state=Task.lock)
async def without_puree(message: types.Message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.add("Работает", "Не работает")
await Task.next()
await message.answer(text="Что именно?", reply_markup=markup)
@dp.message_handler(text="Интернет", state=Task.internet)
async def without_puree(message: types.Message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.add("Работает", "Не работает")
await Task.next()
await message.answer(text="Что именно?", reply_markup=markup)
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)