You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:48:37