如何修改指定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
相关产品推荐
相关产品推荐

