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

Discord.js嵌入消息中提及角色/用户的简化实现问询

解决Discord Embed中简便显示角色说明且不@成员的问题

我刚好在自己的Discord服务器搭建角色说明频道时遇到过完全一样的需求,给你几个实用的解法——既能让角色名显示出对应的样式(带角色颜色),又不会@到任何成员,还能简化你的代码书写:

  • 核心原理:使用无提及角色格式化语法
    Discord支持用<@&角色ID>的格式来显示角色的样式化名称,这种写法在Embed里只会展示角色名(带对应颜色),不会触发@提醒。但直接写ID确实麻烦,下面是简化步骤:

  • 快速获取角色ID的小技巧
    不用每次去服务器设置里翻角色ID:按住Shift+右键点击Discord客户端里的角色,就能直接复制角色ID,比手动查找快很多。

  • 用角色映射简化代码书写
    如果你有大量角色,可以先定义一个角色名称和ID的映射对象,然后写一个简单的格式化函数,之后就可以像你想要的@Verified那样简便调用了:

    // 先维护一份角色名称-ID映射表
    const roleMap = {
      Verified: "123456789012345678", // 替换成你的Verified角色ID
      Moderator: "987654321098765432", // 替换成你的Moderator角色ID
      // 继续添加其他角色...
    };
    
    // 格式化函数:输入角色名,返回带样式的无提及角色标签
    function getRoleTag(roleName) {
      return `<@&${roleMap[roleName]}>`;
    }
    
    // 现在构建Embed字段就很简便了
    .addFields({
      name: "All roles",
      value: `${getRoleTag("Verified")} means you have accepted the rules\n${getRoleTag("Moderator")} means you're responsible for server moderation and rule enforcement`
    })
    

    这样你只需要初始化一次映射表,之后写说明的时候直接调用函数就行,不用反复写冗长的ID。

  • 另一种快捷方式:先在Discord里编辑文本再复制
    如果你不想写映射函数,可以先在Discord的聊天框里(随便找个私人频道或者草稿),用Shift+右键点击角色插入<@&ID>标签,编辑好所有角色说明文本后,直接把这段文本复制到你的代码的Embed value里,这样也能快速完成内容编写。

需要注意的是:直接在代码里写@Verified这种纯文本的话,Discord不会把它解析成角色样式,只会显示普通文字,所以必须用<@&角色ID>的格式才能实现带颜色的角色名展示哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:42:50