本地化齿轮的discord.py

时间:2018-09-19 15:46:53

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

在每个服务器上本地化齿轮(模块/插件)时,我遇到了一个问题。 目前,如果给出了install命令,我可以加载一个齿轮,但是它将转移到该机器人所在的每台其他服务器上。我如何对其进行本地化,以便每个服务器都加载自己的独立齿轮?

我尝试了几种不同的想法,但是它们都没有得到任何结果,因此我没有真正可以共享的代码。

我确实知道我可以为此建立一个检查系统,但是我不确定如何做到这一点,而又无法说出哪个服务器装载了什么齿轮。

很抱歉,这个问题可能不是最漂亮的问题,但这是我所能提供的。

1 个答案:

答案 0 :(得分:1)

简短的回答:您不能。加载嵌齿轮会修改Client / Bot对象:添加Command对象,事件回调等。由于只有一个BotClient一次登录bot帐户,该实例将由所有服务器共享。

您有几种选择:

  1. 子类Bot具有记录服务器和齿轮之间的映射的属性。更改Cogs setup函数以修改此映射,并添加一个__unload方法也可以对其进行修改。在执行齿轮操作之前,请先检查该映射。

  2. 注册多个机器人帐户,每个服务器一个,并免费加载齿轮。

  3. 如果您使用重写分支并且您的齿轮只是命令,则可以定义齿轮的__local_check方法,该方法将确定是否可以运行命令或不使用Context对象。 See an example here。异步分支仅允许您编写全局检查。如果您的齿轮中有任何事件,您将需要手动为其添加检查,因为它们不会生成Context对象。