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

Heroku部署python-telegram-bot的/reputation命令报错排查

问题排查结果

1. 不带参数调用报错local variable 'f' referenced before assignment原因

仅在带参数的if context.args != []分支中执行了f = open("reputation.json", "r")给变量f赋值,当走不带参数的elif context.args == []分支时,代码直接调用json.load(f),此时f没有被定义,直接触发变量未赋值报错。

2. 带参数调用报错Expecting ',' delimiter: line 3 column 2 (char 21)原因

这个是JSON解析错误,触发原因有两个:

  • 文件名拼写不一致:项目目录里存储的文件是reptation.json,但代码里读取的是reputation.json,多了一个字母u,导致读取的是空文件/不存在的文件,JSON解析失败
  • 初始reputation.json格式不符合JSON规范,存在语法错误,比如少逗号、引号不闭合等

其他隐藏bug

  • 声望数值修改逻辑无效:将reputationDict[target]赋值给局部变量amountTarget后修改,不会同步修改原字典reputationDict里的值,最终写入JSON文件的还是原始数据,修改不会生效
  • 数值类型错误:从context.args取到的amount是字符串类型,直接执行加减运算会触发类型错误,需要先转成int类型
  • parseReputationMessage函数语法错误:字典的keys()、values()是方法,必须加括号调用,且不能直接用下标取值,需要先转成列表,同时直接写死取前5个key的逻辑,如果字典元素不足5个会直接报错
  • Heroku临时文件系统特性限制:Heroku每次重新部署、dyno重启时都会清空本地文件,存储在reputation.json里的数据会定期丢失,无法持久化存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:42:00