为不同的不和谐服务器创建自定义前缀

Creating a custom prefix for different discord servers

我正在尝试让机器人有一个前缀,您可以将其用于您想要的每个服务器,但是当您使用命令时,它会在控制台中弹出

return prefixes[str(message.guild.id)] #recieve the prefix for the guild id given
KeyError: '882434407212925000'

这是我使用的代码和它说失败的行

def get_prefix(client, message): ##first we define get_prefix
    with open("prefixes.js", "r") as f: ##we open and read the prefixes.json, assuming it's in the same file
        prefixes = json.load(f) #load the json as prefixes
    return prefixes[str(message.guild.id)] #recieve the prefix for the guild id given

错误的文件类型

首先,您尝试输入的文件是一个 .js (JavaScript) 文件,它不是一种数据库形式。您很可能正在寻找可以存储数据的 .json(JavaScript Object Notation)文件。

找不到公会ID

您的代码无法正常工作的另一个原因是您返回的数据集不存在。换句话说,公会不在前缀文件中。

例子

def get_prefix(client, message):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    try:
        return prefixes[str(message.guild.id)]
    except:
        prefixes[str(message.guild.id)] = 'put default prefix here'}
        with open('prefixes.json', 'w') as f:
            json.dump(prefixes, f)
        return prefixes(message.guild.id)]

将 'put default prefix here' 替换为您的机器人前缀。

说明

在上面的示例中,我在您的代码中添加了一个 try except,以便在发生错误时(无法在数据集中找到公会)将其添加到数据集和 returns 机器人的默认前缀作为占位符。