开发者社区> 问答> 正文

通过discord bot为每个人设置唯一关键字

我目前正在尝试制作一个机器人,允许成员设置机器人然后在服务器中检查的特定关键字(在一段时间内)。如果机器人在消息中检测到该关键字(仅通过另一个bot / webhook),它会警告设置该关键字的用户。

基本上我想做的是像这样的场景:

会员1 --->

!setkeywordnew link

(bot然后将成员1的关键字专门设置为“new link”)

!listkeywords

(bot返回单词/短语“new link”)

会员2 --->

!setkeyword new shoe

(机器人然后将成员1的关键字专门设置为“new shoe”)

!listkeywords

(机器人返回单词/短语“new shoe”)

我遇到的最好的是使用字典和列表。字典的关键是设置关键字的成员的用户ID,列表包含关键字。

变化1:dictt = {}

@bot.command()
async def add(ctx,keyword):

listy = []
listy.append(keyword)
dictt[ctx.author.id] = listy

变化2:

dictt = {}
listy = []
@bot.command()
async def add(ctx,keyword):

listy.append(keyword)
dictt[ctx.author.id] = listy

变化1:每次用户向机器人发送消息时,都会生成一个新列表。每个唯一用户的含义只有一个关键字在列表中。因此,如果用户尝试添加多个关键字,则只会将最新的关键字添加到列表中

变化2:这导致来自唯一用户的关键字被添加到同一列表中,这意味着每个用户可以添加多个关键字,但它们对于每个用户而言不是唯一的。

如何才能让每个独特的用户拥有自己独特的列表,并且仍然能够为其添加多个关键字?

展开
收起
一码平川MACHEL 2019-01-22 10:54:54 4302 0
1 条回答
写回答
取消 提交回答
  • 拥有全局dict并在附加之前检查用户的id是否存在,如果没有创建包含新单词的新列表。

    memory = {}

    def add(id, word):

    if id in memory.keys():
        memory[id].append(word)
    else:
        memory[id] = [word]
    2019-07-17 23:26:11
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载