You need to enable JavaScript to run this app. Python Discord机器人开发出现AttributeError: 'bool'无append属性报错求解
优惠活动
大模型
产品
解决方案
定价
更多

Python Discord机器人开发出现AttributeError: 'bool'无append属性报错求解

报错原因

你遇到的AttributeError: 'bool' object has no attribute 'append'报错,核心是db["encouragements"]原本是存储鼓励语句的列表,被错误覆盖为了布尔值,布尔类型没有append方法所以调用失败。

问题根源

错误来自你写的!responding命令处理逻辑,存在两处致命错误:

  • 参数提取错误:msg.split("!responding ",1)[0]取到的是命令前缀本身,而非用户输入的true/false参数,应该取拆分结果的索引1位置
  • 存储键错误:你将控制响应开关的布尔值,错误存入了db["encouragements"]键中,直接覆盖了原本存鼓励语句的列表

修复方案

1. 修正!responding命令逻辑

将原代码中!responding对应的代码段替换为以下内容:

if msg.startswith("!responding"):
    # 取拆分后的第二个元素,也就是用户输入的true/false参数
    value =  msg.split("!responding ",1)[1]
    if value.lower() == "true":
        # 赋值给正确的开关键responding,不要覆盖encouragements
        db["responding"] = True
        await message.channel.send("Responding is on.")
    else:
        db["responding"] = False
        await message.channel.send("Responding is off.")

2. 修复附带的列表拼接错误

你在拼接鼓励语句候选池时,错误将列表转成了字符串拼接,会导致后续随机选择逻辑异常,对应逻辑修改为:

if db["responding"]:
    options = starter_encouragements.copy()
    if "encouragements" in db.keys():
        # 用extend拼接两个列表,不要转字符串
        options.extend(db["encouragements"])

3. 清理现有脏数据

因为当前你的数据库中encouragements已经被覆盖为布尔值,需要先清理脏数据,可以在初始化部分(if "responding" not in db.keys()代码段后面)添加以下逻辑:

# 检查encouragements类型是否合法,不合法就删除脏数据
if "encouragements" in db.keys() and not isinstance(db["encouragements"], list):
    del db["encouragements"]

内容的提问来源于stack exchange,提问作者João Pedro da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:15:04