修复很简单。
您有两个选择,要么在索引的单独文件中创建客户端并将其导出,要么在执行命令时将其作为参数传递。
最后一个是更简单的选择,所以我将重点介绍它。
您的命令处理程序应该以某种方式包含此内容。
// command is just a placeholder here
command.execute(message, args);
现在您可以将客户端作为另一个参数传递。
command.execute(message, args, client);
在你的命令文件中,你现在需要在执行文件时包含它。
async run(message, args, client) { // the order must be the same as above
// your code here
}
如果你不想或不能做上述,你也可以通过消息对象获取频道ID。
var channel = message.guild.channels.cache.get("ChannelID");
编辑:
或者,您可以在一个单独的文件中创建您的客户端并将其导入您需要的所有位置。让我们创建一个名为client.js 的文件并将其放在与index.js 相同的目录中。
-- Your bots folder
- client.js
- index.js
- // all your other files
现在我们在client.js 中创建客户端并导出它。
const Discord = require('discord.js');
const client = new Discord.Client();
module.exports = client;
下一步是删除index.js 中的相应行,这样您就不会创建两次客户端并导入客户端的新实例。
const client = require('./client.js');
您可以在需要客户端的每个文件中执行此操作。您需要更改的只是client.js 的相对路径。