Aiogram 3.0.0b中群聊状态机后续处理函数未触发的问题求助
Aiogram 3.0.0b中群聊状态机后续处理函数未触发的问题求助
大家好,我现在碰到了一个Aiogram 3.0.0b的棘手问题,想请各位帮忙分析下。
我开发了一个机器人功能,用来注册连队日志,用到了FSM状态机。触发/register_journal命令的初始函数initiate_register_journal_command在私聊里完全正常,但在群聊里执行时,当我发送连队名称后,后续的处理函数handle_registered_journal_data根本不会被触发,整个流程就卡住了。
先贴一下我的相关代码:
命令处理与状态机逻辑
from ..forms import * @router.message(Command(commands='register_journal')) async def initiate_register_journal_command(message: types.Message, state: FSMContext): current_user_id = message.from_user.id await message.reply(text="Initiating registration") # await asyncio.sleep(3) await message.reply(text=JournalForm.label) await state.set_state(JournalForm.current_user_id) await state.update_data(current_user_id=current_user_id) #worked fine await state.set_state(JournalForm.name) @router.message(JournalForm.name) # , CurrentUserFilter(JournalForm.current_user_id)) async def handle_registered_journal_data(message: types.Message, state: FSMContext): name = message.text if not Journal.objects.get(name=name): state.set_state(JournalForm.name) state.update_data(name=name) group_id = message.chat.id add_journal(name, group_id) else: await message.reply(text="Error: For the platoon's assignment the journal has already been created")
状态机表单定义
class JournalForm(StatesGroup): current_user_id = State() name = State() label = "Platoon number" callback_text = "A journal of visits to the platoon has been created!" on_registration_fail_text = "An error occurred while registering a platoon, please try again later"
我排查后发现两个关键现象:
- 在私聊和机器人对话时,整个流程完全顺畅,发送连队名称后会立刻触发处理函数
- 但在群聊里执行
/register_journal后,机器人正常回复了"Initiating registration"和"Platoon number",可我发送名称后没有任何反应,处理函数完全没被调用
我猜测问题出在群聊环境下,机器人没有正确捕获或处理后续发送的消息,但实在摸不准具体原因,有没有遇到过类似问题的朋友能给点思路?
备注:内容来源于stack exchange,提问作者Dimon Agon
相关产品推荐
相关产品推荐

