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

discord.js guildMemberAdd新成员事件无响应无报错问题排查

代码存在的问题如下:

  • 事件名配置错误
    discord.js官方定义的服务器新成员加入事件名为guildMemberAdd,你导出配置里的name字段填了newmember,框架不会将该处理函数绑定到对应事件上,自然不会触发。
  • once参数配置错误
    once: true代表该事件处理函数只会执行一次就销毁,而新成员加入事件需要每次有新成员进入都触发,应该改为once: false。
  • 事件处理逻辑结构错误
    你在run函数内部额外写了guildMemberAdd, member => { ... }的嵌套箭头函数,这段函数仅被定义、从未被调用,内部逻辑完全不会执行,所以不会有报错也不会发送消息。同时run函数的参数配置错误,guildMemberAdd事件触发时会传递member作为参数,你需要调整run的入参为正确的参数顺序。
  • 缺少必要的网关意图
    如果你使用的是discord.js v13及以上版本,需要在客户端初始化时开启GUILD_MEMBERS意图,同时需要在Discord开发者后台的机器人设置页打开Server Members Intent开关,否则无法接收到成员相关事件。
  • embed发送写法不符合版本要求
    discord.js v13及以上版本发送嵌入消息不能直接传入embed实例,需要用{embeds: [embed实例]}的格式传递参数。

修正后的参考代码:

const Discord = require('discord.js'); // 注意提前导入Discord依赖,无全局导入的情况下缺该行会触发报错

module.exports = {
  name: 'guildMemberAdd',
  once: false,
  run: async (client, member) => {
    try {
      const welcome = new Discord.MessageEmbed()
        .setColor('#57F287')
        .setDescription(`Добро пожаловать, ${member.user} на сервер.
        \nВы можете прочитать наши правила в канале <#849407505661952001>`)
      const welcomeChannel = member.guild.channels.cache.get('847196125756915772')
      if (welcomeChannel) welcomeChannel.send({ embeds: [welcome] })
    } catch(e) {
      console.error(e)
    }
  }
}

额外提示:如果使用discord.js v14版本,MessageEmbed已经迁移到discord.js/builders模块下,需要调整对应导入路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 04:15:10