执行特定命令时如何更新列表项(discord.py bot)

2024-04-26 23:49:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我的discord bot文件夹中有一个nsfw单词列表作为json文件。我想做的是,当我键入“.add(word)”时,这个词会被添加到列表中。我已经发出了这个命令,它也起作用了,因为当我再次键入这个单词时,它会被删除。但是当我从IDE中查看列表时,它仍然是旧的。此外,当我停止bot并再次运行它时,这个单词会从内存中删除,这是有道理的

如何使列表在执行命令时实时更新?任何帮助都将不胜感激

以下是我的代码片段:

@commands.command()
    async def add(self, ctx, word):
        await ctx.message.delete()
        file.append(word)
        await ctx.channel.send("Done.")

下面是我在json文件中的列表:

nsfw_list =  [nsfw word, nsfw word, nsfw word...etc]

Tags: 文件命令文件夹addjson列表键入bot
1条回答
网友
1楼 · 发布于 2024-04-26 23:49:42

问题是您没有在JSON文件中转储或更新数组(或列表)。因此,只要bot正在运行,word就会加载到内存中,但当bot停止时,情况并非如此。您需要将word转储到文件中,以将其保存在列表中。请尝试以下代码段:

# make sure to import json module that ships with python

import json

@commands.command()
async def add(self, ctx, word):
    await ctx.message.delete()
    with open("filewithword.json", "r") as f:
        words_list = json.load(f)
    words_list["bad_words"].append(word)
    
    with open("filewithword.json", "w") as f:
        json.dump(words_list, f, indent=4)

基本上,只要运行.add命令,我们就用坏单词加载JSON文件,在该列表中添加单词,最后更新该JSON文件中的列表

关于JSON模块的这种解释可能还不够。如果您不知道,我强烈建议您阅读本模块的文档

相关问题 更多 >