Javascript 别名don';即使使用alias命令处理程序也无法工作

Javascript 别名don';即使使用alias命令处理程序也无法工作,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我在我的main.js文件中有一个命令处理程序,别名处理程序也在其中-但当我尝试使用我在module.exports.config中设置的别名运行命令时,它没有响应 这是我的命令处理程序: fs.readdir(`./commands/`,(错误,文件)=>{ if(error){return console.log(“尝试获取命令时出错”);}; files.forEach(文件=>{ const command=require(`./commands/${file}`); const com

我在我的
main.js
文件中有一个命令处理程序,别名处理程序也在其中-但当我尝试使用我在
module.exports.config
中设置的别名运行命令时,它没有响应

这是我的命令处理程序:

fs.readdir(`./commands/`,(错误,文件)=>{
if(error){return console.log(“尝试获取命令时出错”);};
files.forEach(文件=>{
const command=require(`./commands/${file}`);
const commandName=file.split(“.”[0];
client.commands.set(commandName,command);
if(命令别名){
command.alias.forEach(别名=>{
client.alias.set(别名、命令名)
});
};
});
});
client.on(“消息”,异步消息=>{
if(message.author.bot | | message.channel.type==“dm”)返回;
让前缀=(“;”);
让messageArray=message.content.split(“”);
让cmd=messageArray[0].toLowerCase();
设args=messageArray.slice(1)
如果(!message.content.startsWith(prefix))返回;
让commandfile=client.commands.get(cmd.slice(prefix.length))| | client.commands.get(client.alias.get(cmd.slice(prefix.length)))
if(commandfile)commandfile.run(客户端、消息、参数)
})
这是我的
模块.exports.config

module.exports.config={
名称:“eval”,
描述:“评估代码”,
别名:['debug']
};

您不需要为别名创建新集合。您可以使用集合的方法并检查是否存在具有命令名的别名

因此,在
fs.readdir
中,您仅设置
client.commands
,当有传入消息时,您可以检查是否有确切的命令名(使用
client.commands.get
),如果没有,您可以检查该命令是否具有
别名
属性。如果有,您可以检查
别名
数组是否包含该命令

此外,如果您在多个位置使用
cmd.slice(prefix.length)
,而在任何地方都不使用
cmd
,则可能需要从命令中删除前缀

以下各项应按预期工作:

fs.readdir(`./commands/`,(错误,文件)=>{
如果(错误){
console.log(错误);
return console.log('尝试获取命令时出错');
}
files.forEach((文件)=>{
const command=require(`./commands/${file}`);
const commandName=file.split('.')[0];
client.commands.set(commandName,command);
});
});
client.on('message',异步(message)=>{
让前缀=';';
如果(
message.author.bot||
message.channel.type==='dm'||
!message.content.startsWith(前缀)
)
返回;
const args=message.content.slice(prefix.length.trim().split(+/);
const commandName=args.shift().toLowerCase();
常量命令=
client.commands.get(commandName)||
client.commands.find((cmd)=>cmd.config?.alias?.includes(commandName));
如果(!命令)返回;
试一试{
运行(客户端、消息、参数);
}捕获(错误){
log('尝试运行该命令时出错:');
console.log(错误);
}
});

看起来不错,但即使在我打字时使用了此代码;调试代替;eval它不会发送任何东西。哦,当然,您导出了一个带有
config
对象的对象,因此需要使用
cmd.config.alias
。我刚刚更新了我的代码。您可以使用可选链接,如
cmd.config?.alias?.includes(commandName)
,但它至少需要节点v14。我刚刚又更新了我的代码。您是否在某处删除了
客户端.commands
集合?我没有更改任何与之相关的内容。天哪,我没有注意到我删除了它,对不起。现在效果很好!