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

如何修改指定user_id用户状态?遇Dispatcher参数错误求解答

问题解决方法

错误原因

你遇到的TypeError是因为python-telegram-bot版本不兼容:不同版本的Dispatcher.current_state()参数规则和调用方式存在差异。你参考的方案对应旧版本(v13及以下),但当前使用的是v20+版本,API已变更。

具体解决方案

方案1:修正current_state调用(适配v20+)

v20+版本中,current_state是异步方法,且参数名从chat/user改为chat_id/user_id,需要添加await并修正参数名:

state = await dp.current_state(chat_id=chat_id, user_id=user_id)
await state.set_state(User.accepted)

方案2:直接使用状态类的set方法(适配v20+)

你目前改用的ClassWithStates.state_name.set()是v20+推荐的简化写法,补充必要参数即可正常运行:

await ClassWithStates.accepted.set(dp, chat_id=chat_id, user_id=user_id)

若使用v13及以下版本

旧版本中current_state是同步方法,参数名为chat/user,原代码移除await即可:

state = dp.current_state(chat=chat_id, user=user_id)
await state.set_state(User.accepted)

内容的提问来源于stack exchange,提问作者overl4mer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:15:57