Python开发Discord机器人时Replit数据库列表拼接报TypeError如何解决
报错原因
Replit 内置数据库db中存储的列表并非Python原生的list类型,而是Replit专门封装的ObservedList类型,Python原生列表的+拼接运算符不支持直接和ObservedList类型操作,你代码中options = options + db["insulte"]这一行就是触发报错的位置。
修复方案
你可以任选下面任意一种方法修改代码:
- 方案一:将数据库返回的
ObservedList强制转换为原生列表后再拼接
将触发报错的代码行修改为:
options = options + list(db["insulte"])
- 方案二:使用列表的
extend方法完成拼接,该方法原生支持可迭代对象,无需额外做类型转换
将对应代码段替换为:
options = insulte_.copy() if "insulte" in db.keys(): options.extend(db["insulte"])
额外注意
你当前删除指令的代码存在小问题:index = int(msg.split("cs del",1)[1])这行匹配规则少了前缀$,会导致触发删除指令时取不到参数报错,建议修改为:
index = int(msg.split("$cs del",1)[1])
内容的提问来源于stack exchange,提问作者ENDERastronaute
相关产品推荐
相关产品推荐

