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

Discord.js 13 如何在MessageEmbed中实现提及用户功能

discord.js v13 欢迎嵌入提及用户修复方案

前置要求

首先确认你在机器人客户端初始化时已经开启GUILD_MEMBERS意图,v13版本默认关闭该意图,未开启将无法触发guildMemberAdd成员加入事件,初始化示例:

const { Client, Intents } = require('discord.js');
const bot = new Client({
    intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.GUILD_MEMBERS
    ]
});

修复后代码

方式1:使用MessageEmbed构造实例(推荐)

const { MessageEmbed } = require('discord.js');

bot.on('guildMemberAdd', member => {
    // v13所有资源集合需通过cache访问
    const welcomeChannel = member.guild.channels.cache.get('替换为你的实际频道ID');
    if (!welcomeChannel) return;

    const welcomeEmbed = new MessageEmbed()
        .setTitle('We got a new user')
        .setDescription(`Welcome ${member.toString()}`)
        // 可选拓展配置
        .setColor('#2ecc71')
        .setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 256 }));

    // 发送嵌入需明确指定embeds数组参数
    welcomeChannel.send({ embeds: [welcomeEmbed] });
});

方式2:直接传入嵌入对象

如果不需要额外的嵌入配置方法,也可以直接传入普通对象:

bot.on('guildMemberAdd', member => {
    const welcomeChannel = member.guild.channels.cache.get('替换为你的实际频道ID');
    if (!welcomeChannel) return;

    welcomeChannel.send({
        embeds: [{
            title: 'We got a new user',
            description: `Welcome ${member.toString()}`
        }]
    });
});

核心改动说明

  • 资源获取:v13版本中频道、角色、成员等集合类数据都需要先调用.cache属性再执行get操作,旧版本直接channels.get()的写法已废弃
  • 嵌入发送:发送嵌入消息必须将嵌入内容放到embeds数组中作为参数属性,不能直接将嵌入属性写到send方法的参数根层级
  • 用户提及:直接调用member.toString()即可自动生成@提及格式,也可手动写为<@${member.id}>,二者效果完全一致
  • 语法修复:你原有代码存在括号匹配错误,已在修复版本中修正

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:00