在每个服务器上本地化齿轮(模块/插件)时,我遇到了一个问题。 目前,如果给出了install命令,我可以加载一个齿轮,但是它将转移到该机器人所在的每台其他服务器上。我如何对其进行本地化,以便每个服务器都加载自己的独立齿轮?
我尝试了几种不同的想法,但是它们都没有得到任何结果,因此我没有真正可以共享的代码。
我确实知道我可以为此建立一个检查系统,但是我不确定如何做到这一点,而又无法说出哪个服务器装载了什么齿轮。
很抱歉,这个问题可能不是最漂亮的问题,但这是我所能提供的。
答案 0 :(得分:1)
简短的回答:您不能。加载嵌齿轮会修改Client
/ Bot
对象:添加Command
对象,事件回调等。由于只有一个Bot
或Client
一次登录bot帐户,该实例将由所有服务器共享。
您有几种选择:
子类Bot
具有记录服务器和齿轮之间的映射的属性。更改Cogs setup
函数以修改此映射,并添加一个__unload
方法也可以对其进行修改。在执行齿轮操作之前,请先检查该映射。
注册多个机器人帐户,每个服务器一个,并免费加载齿轮。
如果您使用重写分支并且您的齿轮只是命令,则可以定义齿轮的__local_check
方法,该方法将确定是否可以运行命令或不使用Context
对象。 See an example here。异步分支仅允许您编写全局检查。如果您的齿轮中有任何事件,您将需要手动为其添加检查,因为它们不会生成Context
对象。