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

Discord机器人开发遇message事件弃用告警 替换为messageCreate无效

问题原因及修复方案

你碰到的告警是discord.js v13及以上版本废弃了旧的message事件导致的,替换没生效大概率是只修改了回调函数的参数名,没有修改事件监听的事件名字符串。除此之外你的代码还存在多处语法错误和过时API调用问题,所有需要修正的点如下:

  • 事件名修正:将client.on('message', (message) => { 中的事件名改为messageCreate,即修改为client.on('messageCreate', (message) => {,回调参数名可以保持message不变,不需要额外修改
  • 语法错误修正:
    • 数组取元素使用方括号,将let cmd = MessageArray(0).slice(prefix.length)改为let cmd = MessageArray[0].slice(prefix.length)
    • 补全代码缺失的闭合符号:原有代码最后缺少if块的闭合},以及事件回调的闭合}
  • API适配修正(适配discord.js v13+版本):
    • 判断消息发送者为机器人的属性修改:将if(message.author.client) return;改为if(message.author.bot) return;
    • 频道类型枚举值修改:将if(message.channel.type !== 'text') return;改为if(message.channel.type !== 'GUILD_TEXT') return;
    • 消息发送方法修正:将message.channel.send({ messages: ['hello'] });改为message.channel.send('hello');

修正后可正常运行的完整代码如下:

client.on('messageCreate', (message) => {
    if(message.author.bot) return; 
    if(message.channel.type !== 'GUILD_TEXT') return;
    let prefix = '!'; 
    let MessageArray = message.content.split(' ');
    let cmd = MessageArray[0].slice(prefix.length)
    let args = MessageArray.slice(1)

    if(!message.content.startsWith(prefix)) return; 

    if(cmd == 'hello') {
        message.channel.send('hello');
    }
})

内容的提问来源于stack exchange,提问作者PhoebeConrey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:24:01