You need to enable JavaScript to run this app. Discord欢迎机器人正常运行却未在指定频道发送欢迎消息的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

Discord欢迎机器人正常运行却未在指定频道发送欢迎消息的问题排查

故障原因与修复方案
  • 核心触发问题:未开启Discord要求的特权意图,导致事件完全不执行
    按照Discord当前的规则,机器人必须在开发者后台手动开启「服务器成员意图(Server Members Intent)」,否则guildMemberAdd事件完全不会触发。这也是你仅能看到登录成功提示、没有任何报错的最常见原因。找到你机器人应用的Bot设置页,下拉到特权意图区域打开对应开关保存即可。
  • 依赖版本过旧,全量使用已废弃的旧API
    你当前的代码基于早已停止维护的discord.js v11及更早版本编写,所有核心方法现在都已不可用,首先需要执行npm install discord.js@latest把依赖升级到最新稳定版,再对应调整API写法:
    • 频道获取:原写法member.guild.channels.find("name","💬✦general")已废弃,当前需要从缓存取频道、用回调匹配,即member.guild.channels.cache.find(c => c.name === "💬✦general");更稳妥的方式是直接存目标频道ID,用member.guild.channels.cache.get("你的频道ID")获取,避免频道改名后功能失效
    • 嵌入对象:原new Discord.RichEmbed()已更改为new Discord.MessageEmbed()
    • 头像获取:原member.user.avatarURL属性写法,现在是方法调用member.user.displayAvatarURL()
    • 发送嵌入:原channel.sendEmbed(embed)已废弃,当前统一写法为channel.send({ embeds: [embed] })
  • 代码存在直接导致崩溃的语法/逻辑错误
    1. 嵌入消息的addField方法必须传入2个必填参数(字段名、字段值),你写的.addField(':family_mwgb: | Luda zabava tek počinje')仅传了1个参数,运行时会直接抛异常,因为你没有加全局错误捕获,所以控制台没有输出对应报错。
    2. 字段参数错位:你写的.addField("**[" + ${member.id} + "]**",'Pročitaj naša pravila u',"**[#📖✦pravila]**")中,第一个参数(字段名)误填为用户ID,正确的字段名应该填写类似「规则频道」的提示文字,否则嵌入显示逻辑会混乱。
  • 冗余无效代码需要删除
    事件回调外面单独写的let channel = member.guild.channels.find("name","💬✦general");这行完全无效,它所处的作用域没有定义member变量,运行时会直接报ReferenceError,直接删掉即可。
  • 基础权限校验:确认机器人在目标欢迎频道拥有「发送消息」「嵌入链接」的权限,否则消息会被服务器权限策略拦截,无法成功发出。

修复后可直接运行的参考代码

// 替换成你自己的欢迎频道ID,不要用名字匹配
const WELCOME_CHANNEL_ID = "在这里填你的目标频道ID";

client.on('guildMemberAdd', member => {
    const channel = member.guild.channels.cache.get(WELCOME_CHANNEL_ID);
    // 频道不存在直接退出,避免报错
    if (!channel) return;

    const memberAvatar = member.user.displayAvatarURL();
    const embed = new Discord.MessageEmbed()
        .setColor('RANDOM')
        .setThumbnail(memberAvatar)
        .addField(':bust_in_silhouette: | Ime : ', `${member.user.tag}`)
        .addField(':microphone2: | Zdravo!', `Dobro došao u dolinu , ${member}`)
        .addField(':id: | User :', `**[${member.id}]**`)
        .addField('Pravila', 'Pročitaj naša pravila u', "**[#📖✦pravila]**", true)
        .addField(':family_mwgb: | Sada si član', `${member.guild.memberCount}`)
        .addField("Name", `<@${member.id}>`, true)
        .addField(':family_mwgb: | Luda zabava tek počinje', "Ovde ima dosta zabave i novih prijatelja!")
        .addField('Server', `${member.guild.name}`, true)
        .setFooter(`${member.guild.name}`)
        .setTimestamp()

    channel.send({ embeds: [embed] });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 03:54:02