在 FSM 步骤中不带任何参数

问题描述 投票:0回答:1

一步式有限状态机 错误:Town() 不带参数

@weather_router.message(Command("weather"))
class Town(StatesGroup):
    town = State()
async def town(message: Message, state: FSMContext):
    await message.answer(f"{message.from_user.first_name}, введи город")
    await state.set_state(Town.town)
async def townn(message: Message):
    await message.answer(f"Ваш город\n{message.text}")

我希望机器人能够处理用户“town”并使用 FSM 通过短信将其发回给他

python fsm aiogram
1个回答
0
投票
  1. 从装饰器下删除“城镇”状态组, 因为它装饰了一组状态,而不是消息处理程序
  2. 用状态过滤器装饰“townn”函数:
    @weather_router.message(Town.town)
  3. await state.clear()
    添加到“townn”函数以清除 FSM 上下文

代码:

class Town(StatesGroup):
    town = State()

@weather_router.message(Command('weather'))
async def town(message: Message, state: FSMContext):
    await state.set_state(Town.town)

    await message.answer(f"{message.from_user.first_name}, введи город")

@weather_router.message(Town.town)
async def townn(message: Message, state: FSMContext):
    await message.answer(f"Ваш город\n{message.text}")

    await state.clear()
© www.soinside.com 2019 - 2024. All rights reserved.