You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram Bot重置状态后出现无限错误消息问题求助

Telegram Bot重置状态后出现无限错误消息问题求助

兄弟,我一眼就揪出问题的根源了!你这段代码里藏着一个无限递归调用,这就是导致Bot不停发送错误消息的罪魁祸首。

先看看你的原代码:

@dp.message_handler(state=StateInfo.user_answer)
async def reset_bot(message: types.Message, state: FSMContext):
    await state.reset_state(True)
    if message.text == 'Send new task':
        await start_uma(message)
    else:
        await bot.send_message(text="Error!", chat_id=message.chat.id)
    await reset_bot(message, state)  # 这里就是问题所在!

你在reset_bot函数的最后一行,又调用了它自己——这会让函数陷入无限循环:每次执行完逻辑后,它会立刻再次调用自己,Bot就会不停地执行这个流程,反复发送错误消息,根本停不下来。

修正方案

把最后那行多余的递归调用删掉就行,修正后的代码如下:

@dp.message_handler(state=StateInfo.user_answer)
async def reset_bot(message: types.Message, state: FSMContext):
    await state.reset_state(True)
    if message.text == 'Send new task':
        await start_uma(message)
    else:
        await bot.send_message(text="Error!", chat_id=message.chat.id)

另外再提个小细节:state.reset_state(True)里的True参数表示重置状态时保留上下文数据,如果你的需求是完全清空状态数据,可以改成await state.reset_state(False)(或者直接省略参数,默认就是False)。

如果修复后还有问题,可以检查一下start_uma函数里有没有触发重复消息的逻辑,但目前来看递归是最直接的问题根源。

备注:内容来源于stack exchange,提问作者Misha Slipchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:03:00