Discord.js开发机器人出现message事件弃用警告如何修复
问题诱因
控制台弹出的弃用警告触发原因非常明确:discord.js v13及以上版本中,原用于监听频道新消息的message事件已被正式废弃,官方要求替换为messageCreate事件。
你之前的修复操作完全没有命中问题核心:
- 仅修改消息发送逻辑里的字段、或者全局替换代码中所有
message字符串为messageCreate是无效操作:代码中出现在回调参数位置、属性调用位置的message要么是自定义命名的变量,要么是消息对象的固有属性,和事件监听名称没有任何关系。全局替换反而会导致message.content、message.channel这类属性调用失效。 - 唯一触发警告的位置是
client.on()方法的第一个参数,也就是你声明要监听的事件名称,你之前的修改没有动到这个位置,所以警告会持续弹出。
正确修复方案
只需要修改事件监听声明处的事件名即可,回调内部的所有逻辑不需要做任何改动:
// 仅修改on方法的第一个参数为'messageCreate',回调参数message保持原名即可 client.on('messageCreate', (message) => { if (!message.content.startsWith(prefix) || message.author.bot) return const args = message.content.slice(prefix.length).split(/ +/) const command = args.shift().toLowerCase() if (command === 'ping') { message.channel.send('pong!') } else if (command === 'turn-off') { if (message.author.id === '000000000000000000') { message.channel.send('Shutting down...') let interval0 = setInterval(turnOff, 1000) function turnOff() { clearInterval(interval0) console.log('Shutting down...') client.destroy() } } else { message.channel.send( "You don't have required permissions to use this command!" ) } } })
残留警告排查
如果修改后警告依然存在,按以下步骤排查:
- 全局搜索项目代码中所有
client.on('message'的写法,确保所有监听新消息的位置都替换成了messageCreate,包括你引入的第三方机器人插件、功能拆分的其他代码文件 - 运行启动命令时加上
--trace-deprecation参数,即执行node --trace-deprecation 你的机器人入口文件.js,控制台会直接打印出触发弃用警告的具体代码行,直接定位遗漏的修改点即可 message.channel.send()方法本身没有被弃用,不需要修改这部分相关代码。
内容的提问来源于stack exchange,提问作者PRINT3R
相关产品推荐
相关产品推荐

