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

Python开发Discord Bot时列表拼接后无法新增鼓励语问题求助

问题原因
  • 核心为类型不匹配报错,你执行options + db['encouragements']操作时,options是列表类型,但数据库中存储的encouragements是字符串类型,Python不支持列表和字符串直接拼接,因此触发类型错误。
  • 该问题通常由新增自定义鼓励语的存储逻辑错误导致:首次存储鼓励语时没有将内容包装为列表,直接将用户输入的单个字符串存入了数据库,后续读取拼接时就会报错。
解决方案

1. 修正鼓励语存储逻辑

确保所有存入数据库的鼓励语始终为列表格式,新增鼓励语的逻辑参考如下:

# new_encourage 为从Discord消息中获取的用户自定义鼓励语字符串
if "encouragements" in db.keys():
    # 读取已有列表,追加新元素后再存回
    encourage_list = db["encouragements"]
    encourage_list.append(new_encourage)
    db["encouragements"] = encourage_list
else:
    # 首次存储直接初始化包含新内容的列表
    db["encouragements"] = [new_encourage]

2. 清理数据库错误数据

如果已经错误存储了字符串类型的encouragements,可以先执行一次删除操作清理错误数据,再重新测试功能:

if "encouragements" in db.keys() and not isinstance(db["encouragements"], list):
    del db["encouragements"]

3. 优化原有拼接逻辑

可以给原有拼接代码增加类型校验,同时避免修改默认鼓励语列表,提升代码健壮性:

# 复制默认列表,避免后续操作修改原初始列表
options = starter_encouragements.copy()
if "encouragements" in db.keys() and isinstance(db["encouragements"], list):
    options.extend(db["encouragements"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:36:03