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

Discord.js v12.5.3机器人报member未定义ReferenceError错误

报错原因

你遇到的ReferenceError: member is not defined是两个核心问题导致的:

  1. guildMemberAdd事件的执行函数参数定义错误:discord.js v12.5.3版本中,guildMemberAdd事件触发时第一个传入的参数就是新加入服务器的member成员对象,你当前代码里把execute参数写成了(message, Discord, client, guild),根本没有接收member对象,后续代码调用member自然会报未定义。
  2. 代码中存在多处v12版本API适配错误,即使解决了member未定义的问题,后续也会触发其他报错:比如未定义channel变量、setFooter传参格式不符合v12要求、把需要调用的方法当成属性直接读取、成员属性取值路径错误。
修复步骤
  • 修正execute函数的入参,正确接收事件传入的member对象
  • 补全欢迎频道的获取逻辑,通过member.guild拿到成员所在服务器,再从频道缓存中读取对应ID的欢迎频道
  • 修正所有v12版本不兼容的API写法,调整属性、方法的调用格式,增加空值判断避免频道不存在时抛出异常
  • 检查你的事件注册逻辑,确保触发guildMemberAdd事件调用execute方法时,传入的参数顺序和execute定义的参数顺序一致
修复后可直接运行的代码(适配discord.js v12.5.3)
const { MessageEmbed} = require('discord.js')

module.exports = {
  name: 'guildMemberAdd',
  execute(member, client) {
    const channelId = '918746332435468288' // 欢迎频道ID
    // 获取目标欢迎频道
    const welcomeChannel = member.guild.channels.cache.get(channelId)
    // 频道不存在时直接返回,避免报错
    if (!welcomeChannel) return

    const embed = new MessageEmbed()
      .setTitle(`Welcome ${member.user.username}`)
      .setColor(`EEA83B`)
      .setDescription(`Welcome \`${member.user.username}\` To The Floppacord! Have Fun And Be Sure To Follow The Rules In <#860428690034917406>`)
      // 服务器图标是方法,需要加()调用
      .setThumbnail(member.guild.iconURL())
      // v12版本setFooter接收两个参数:footer文本、图标地址,不支持对象传参
      .setFooter(member.user.tag, member.user.displayAvatarURL())

    welcomeChannel.send(member.user.tag)
    welcomeChannel.send(embed)
  }
}

补充提示:如果你的事件处理逻辑里需要用到client对象,在调用execute的时候把client作为第二个参数传入即可,不需要额外传Discord、message、guild这类参数,这些内容都可以通过member对象间接获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:33:24