You need to enable JavaScript to run this app. Discord.js 如何让机器人在MessageEmbed外发送新成员@提及
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js 如何让机器人在MessageEmbed外发送新成员@提及

实现方案

要把可点击@提及放在嵌入消息外部,只需要调整消息发送的传参逻辑,让普通消息文本承载成员提及,嵌入消息只放固定的欢迎信息即可,不需要复杂的额外配置。

关键调整点

  • 把原来写在嵌入消息里的用户相关内容全部移除,避免提及被包裹在嵌入块内部
  • 替换原来用来显示用户名的member.user.tag,这个方法拿到的是纯文本格式的“用户名#编号”,根本不是可点击的@提及
  • 调用频道发送方法时,同时传入普通文本内容和嵌入消息两个部分

修改完成的代码

client.on('guildMemberAdd', async(member) => {
    const welcomeChannel = member.guild.channels.cache.get('761871578178387989') 
    const welcomeEmbed = new Discord.MessageEmbed()
        .setTitle(`:wave: 欢迎加入 **${member.guild.name}**!`)
        .setThumbnail(member.user.displayAvatarURL({dynamic: true, size: 512}))
        .addField('新人必看内容', '**服务器IP:** play.aftnetwork.net\n**商城地址:** https://store.aftnetwork.net\n\n**请务必查阅<#761874528702824469>频道的公告。**', true)
        .setFooter('AftNetwork')
        .setColor('#468DFF')
    // 普通文本放可点击@提及,嵌入放其他欢迎信息
    welcomeChannel.send({
        content: `${member},欢迎来到我们的服务器!`,
        embeds: [welcomeEmbed]
    })
})

注意事项

  • 代码里直接拼接${member}的写法,Discord.js会自动把成员对象解析成原生可点击的@身份提及,和手动写<@${member.id}>的效果完全一样,不会出现纯文本无法点击的问题
  • 如果使用的是Discord.js v12及更早的旧版本,发送接口的写法略有区别,需要改成welcomeChannel.send('@提及文本内容', { embed: welcomeEmbed }),核心逻辑不变
  • 最终发送的消息结构是:消息上方的普通文本区展示可点击的@提及,下方紧跟嵌入消息块,和预期的展示效果完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 05:24:02