每服务器前缀

时间:2018-08-19 08:41:23

标签: python python-3.x discord discord.py

我想知道如何允许我的机器人所连接的每个服务器设置自己的前缀。我正在使用Command ext的dpy异步版本。 我假设您会将前缀和服务器名称存储在.json文件中,但是我不知道如何编写或检查文件。

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用动态命令前缀来执行此操作。编写一个带有BotMessage的函数或协程,并为该消息输出适当的前缀。假设您使用服务器ID的JSON作为前缀:

{ 
  "1234": "!",
  "5678": "?"
}

您可以将该json加载到字典中,然后在该字典中查找服务器ID。在下面,我还提供了一个默认前缀,但是您也可以为没有特定前缀的服务器设置CommandError或其他名称。

from discord import commands
import json

with open("prefixes.json") as f:
    prefixes = json.load(f)
default_prefix = "!"

def prefix(bot, message):
    id = message.server.id
    return prefixes.get(id, default_prefix)

bot = commands.Bot(command_prefix=prefix)

...

答案 1 :(得分:1)

最新答案,但是对于其他也在寻找答案的人,可以使用get_prefix函数。

它与Patrick Haugh的版本非常相似,但可能由于不和谐的库版本不同而有所不同?

prefixes = ['.','!','s.','k!']
ser_pref={'server id':['.',',']}
def get_prefix(bot, msg):
    if msg.server.id in ser_pref:
        return commands.when_mentioned_or(*ser_pref['server id'])


    return commands.when_mentioned_or(*prefixes)(bot, msg)

bot = commands.Bot(command_prefix=get_prefix)

然后您可以稍后通过将命令添加到字典中来使其他服务器使用更多自定义服务器前缀的命令