如何在模块中填充的集合以供在事件/命令中使用



我知道,要拥有一个填充的集合,例如公会和频道,该机器人必须已经登录了,即可以在命令文件和内部事件中使用。我拥有的是一个模块,该模块将在控制不符合的服务器中显示我的日志,我希望能够在事件以及命令中引用此模块。

我尝试导入事件内部的模块以及其他有意义的选项。

这是我的模块中的代码

const Discord = require('discord.js')
const bot = new Discord.Client()
const CC = '../settings/control-center.json'
const CCFile = require(CC)
const GUILD = bot.guilds.get(CCFile.GUILD)
const STARTUP = bot.channels.get(CCFile.STARTUP)
const INFO = bot.channels.get(CCFile.INFO)
const ERRORS = bot.channels.get(CCFile.ERRORS)
const RESTART = bot.channels.get(CCFile.RESTART)
const EXECUTABLES = bot.channels.get(CCFile.EXECUTABLES)
class Control {
    /**
     * Implement control center logging
     * @param {string} message - What to send to the startup channel
     * @return {string} The final product being sent to the startup channel
     */
    STARTUP(message) {
        return STARTUP.send(`${message}`)
    }
}
module.exports = Control

我希望能够全球使用此模块/内部功能,以便我的代码更加紧凑。那么,我该如何拥有它,以便仅在登录机器人后才加载此代码?

在您的模块代码中,您正在创建一个新的Discord客户端实例,并且从未调用登录方法。一种更好的方法是通过您的方法中的bot对象

模块文件

const CC = '../settings/control-center.json';
const CCFile = require(CC);
const GUILD = CCFile.GUILD;
const STARTUP = CCFile.STARTUP;
const INFO = CCFile.INFO;
const ERRORS = CCFile.ERRORS;
const RESTART = CCFile.RESTART;
const EXECUTABLES = CCFile.EXECUTABLES;
class Control {
  startup(bot, message) {
    return bot.channels.get(STARTUP).send(message);
  }
}
module.exports = Control

应用程序文件

// Use the bot here
const Discord = require('discord.js')
const bot = new Discord.Client() 
const control = require('path/to/control.js');
[...]
// to send a message when ready, try something like this
bot.on('ready', () => {
  control.startup(bot, 'bot is ready');
});
// don't forget to login
bot.login('YOUR-TOKEN-HERE');

相关内容

  • 没有找到相关文章

最新更新