discord.js报错TypeError: cannot read property 'execute' of undefined如何解决
问题根因
- 命令文件导出格式错误:
pong.js中将命令配置对象挂载到了run属性下,导致index.js加载命令时,读取到的结构不符合预期,无法正确获取name和execute属性,最终调用时提示execute未定义。 - 命令触发逻辑不合理:
index.js中硬编码了仅处理ping命令的逻辑,既没有对应pong命令的处理分支,硬编码的写法也无法支持后续新增命令的扩展。
修复步骤
1. 修正pong.js的导出规则
将module.exports.run直接改为module.exports,修改后完整代码如下:
module.exports = { name: 'pong', description: "pong cmd", execute(message, args){ message.reply("pong!") } }
2. 优化index.js的命令调用逻辑
替换原有硬编码的ping命令判断逻辑,改为动态匹配已加载的命令,修改后对应代码段如下:
client.on('message', async message => { if(!message.content.startsWith(prefix)) return; let args = message.content.slice(prefix.length).split(" "); let command = args.shift().toLowerCase() // 动态判断是否存在对应命令,存在则执行 if (client.commands.has(command)) { client.commands.get(command).execute(message, args) } })
修改完成后重启服务,发送!pong即可触发命令收到回复。
内容的提问来源于stack exchange,提问作者Irtiza Khan Labib
相关产品推荐
相关产品推荐

