首页 > 解决方案 > python中的连接列表(Discord Bot)

问题描述

我想用python编写一个机器人。我目前正在关注本教程

当我尝试实现 options 变量 (40:55) 时,一切都很好,但是因为我想在 Discord 中测试机器人(目前在 48:19 分钟),所以机器人没有添加新的鼓励。

这是我的代码:

options = starter_encouragements
  if "encouragements" in db.keys():
    options = options + db['encouragements']

这是 starter_encouragements 列表:

starter_encouragements = [
  "Cheer up!",
  "Hang in there!",
  "You are a great person / bot!"
] 

错误信息:在此处输入图像描述

标签: pythondiscordbots

解决方案


TypeError 提供了一条有用的信息。您的代码正在尝试将 ObservedList 连接到列表。它们是两种不同的数据结构。ObservedList 是 replit 包中定义的数据结构。在他们的教程中,他们解释了:

在后台,此功能通过使用特殊替换来替换原始列表和字典类来监听突变,即replit.database.database.ObservedList 和replit.database.ObservedDict。

所以问题变成了,“如何获取 ObservedList 中包含的列表,以便将值添加到另一个列表中?” 这很简单。要获取 ObservedList 中包含的列表,请调用该value属性。

db[“encouragements”].value

将您的代码更改为:

options = starter_encouragements
  if "encouragements" in db.keys():
    options = options + db['encouragements'].value

如果由于某种原因不起作用,请尝试使用 python 的extend()方法而不是+运算符。您需要使用可变序列类型操作

options = starter_encouragements
  if "encouragements" in db.keys():
    options = options.extend(db['encouragements'])

推荐阅读