Telegraf框架调用bot.setMyCommands提示不是函数如何解决?
报错原因
- 版本API不兼容是最高发的原因:Telegraf v3.x 和 v4.x 的API结构差异极大。v3.x 版本中
setMyCommands方法直接挂载在bot实例上,而v4.x 版本开始,所有底层Bot API方法都迁移到了bot.telegram对象下暴露。你所对照的官方文档和你本地安装的Telegraf版本不匹配,就会出现该方法不存在的报错。 - 极小概率为实例初始化异常:如果存在实例导出/引入错误、调用方法早于实例初始化完成也会出现该报错,但你其余bot方法均可正常运行,可基本排除该可能。
可行解决方案
- 适配v4.x版本写法(推荐):将调用路径改为
bot.telegram.setMyCommands即可,同时注意v4.x中命令不需要加/前缀,Telegram会自动补全处理,修改后的代码如下:
bot.telegram.setMyCommands([ { command: 'start', description: 'start a dialogue with Jarvis' }, { command: 'repeater', description: 'make Jarvis repeat every your message' } ])
- 沿用v3.x版本:若要保持原有写法不变,可将本地Telegraf降级到v3最终稳定版,执行以下安装命令即可:
npm install telegraf@3.38.0
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

