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

Discord服务器欢迎消息失效求助,附问题代码

解决Discord欢迎消息失效的问题

嘿,我帮你排查出代码里几个关键问题,这些应该就是导致欢迎消息跑不起来的原因,咱们一步步来修正:

代码里的坑点

  • 未定义的message变量:你获取服务器图标时用了message.guild.iconURL(),但guildMemberAdd事件的参数只有member,根本没有message对象,得换成member.guild.iconURL()才行
  • 未声明的guild变量:${guild.name}里的guild没定义,要改成member.guild.name才能正确获取服务器名称
  • avatarURL没调用:bot.user.avatarURL是个方法,得加括号调用成bot.user.avatarURL(),不然拿不到头像链接
  • 没检查欢迎频道是否存在:如果服务器里找不到叫welcome的频道,代码直接会报错崩掉,得先判断频道存在再继续
  • (可选)要是你用的是Discord.js v13及以上版本,MessageEmbed已经被弃用了,得换成EmbedBuilder

修正后的完整代码

bot.on("guildMemberAdd", member => {
  // 先定位欢迎频道
  const welcomeChannel = member.guild.channels.cache.find(channel => channel.name === 'welcome');
  
  // 频道不存在就打个日志然后退出,避免报错
  if (!welcomeChannel) {
    console.log("找不到名为'welcome'的频道,请检查频道名称是否正确");
    return;
  }
  
  // 正确获取服务器图标链接
  const serverIcon = member.guild.iconURL();
  
  // 构建欢迎嵌入消息
  const embed = new Discord.MessageEmbed()
    .setTitle("Welcome!")
    .setColor(3447003)
    .setDescription(`Welcome ${member.user.username} to ${member.guild.name}!`)
    .addField(':D', 'Hope you enjoy your stay!')
    .setFooter("© Ninjabot 2020", bot.user.avatarURL())
    .setThumbnail(serverIcon)
    .setTimestamp();
  
  // 适配不同Discord.js版本的消息发送格式
  if (Discord.version && Discord.version.startsWith('13')) {
    welcomeChannel.send({ embeds: [embed] });
  } else {
    welcomeChannel.send({ embed });
  }
});

额外提醒

  • 确认机器人在welcome频道里有发送消息和嵌入链接的权限,不然代码对了也发不出消息
  • 可以加个调试日志,比如console.log(已给${member.user.username}发送欢迎消息),方便你确认消息是否发送成功
  • 如果还是没反应,去检查一下机器人的成员特权意图有没有开启,Discord后台的开发者面板里要把Server Members Intent打开,不然guildMemberAdd事件可能触发不了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:12:29