Discord.py 重写多服务器数据

Posted

技术标签:

【中文标题】Discord.py 重写多服务器数据【英文标题】:Discord.py rewrite multi server data 【发布时间】:2019-03-11 02:06:44 【问题描述】:

所以我使用 discord.py 已经有一段时间了,最​​近切换到了 discord.py-rewrite。我似乎无法真正找到有关如何执行此操作的任何信息。但我想拥有每个公会的数据。例如,如果机器人在Server 1 中,而Owner1 确实在-prefix !! 中,它会将其添加到它们的前缀中,但仅限于它们的公会中。所以它不会是Server2 中的前缀。任何帮助都会很棒。有人告诉我,我可以使用 JSON 文件执行此操作,但无法在其中找到我想要的任何内容。

【问题讨论】:

这里有一些重复。即使它是针对异步分支的,也没有更改任何相关部分:Per server prefix'sdiscord.py add to json file on server add 谢谢,我去看看 【参考方案1】:

我自己就是一个不和谐的机器人制造商,有时我会遇到这个问题。 我为此创建了一个解决方法。

您需要的是字典而不是变量。 字典的键是公会属性,值是公会的日期。

这是我的sn-p代码:

# Changing variables and setting them
#--------------------------------------------------------------

# Changing the values of a dictionary.
def guildvarchg(variable, guild, value): # Guild Variable Change
    for key in variable.keys(): # Do not change any of this.
        if key == guild:
            variable[key] = value

# To get a certain guild's variable, add [guild id] to the dictionary name.
# For example: variable[ctx.author.guild] # takes the data for that guild

# You are going to run into a first time setup issue. 
# To counter this, and for every new guild, add this if statement:

if ctx.author.guild not in variable: # only use this in a command definition
    variable[ctx.author.guild] = 'New value' # adds a new server to the data.
else:
    guildvarchg(variable, ctx.author.guild, new_value) # <<< overwrites the server data


#--------------------------------------------------------------

建议您在运行前创建所有变量[字典]

variableNone:None # Format after setting: variableguild_id, data

如果您觉得这很有用,请接受此答案并与您的朋友分享此代码。 我想很多人都需要它。

【讨论】:

以上是关于Discord.py 重写多服务器数据的主要内容,如果未能解决你的问题,请参考以下文章

在 discord.py 中显示设置前缀的命令(重写)

Python 3.8.1 Discord.py 重写反应

Discord.py 重写和 youtube_dl

向消息添加反应。 Discord.py 重写

Discord.py 重新上传图片

禁止命令 discord.py 的问题(重写分支)