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

如何在Discord Embed中实现对用户或角色的@提及(ping)提醒

核心原因

Discord 为了防范垃圾提及骚扰,默认不会将 Embed 内容中的提及标记为有效提及,因此就算提及文本渲染出了浅蓝背景的正确样式,也不会触发对应提醒,你用到的author.mention写法、角色ID格式仅符合渲染规则,没有走通知触发的逻辑。

解决方案

所有方案的核心逻辑都是:发送带Embed的消息时,额外配置allowed_mentions参数,明确指定允许触发提醒的用户、角色ID列表,不需要额外发送再删除@消息。不同开发库的示例如下:

  • 若使用 discord.js(v14+ 版本):
// 替换为你自己构造的Embed对象
const targetEmbed = { ... }
channel.send({
  embeds: [targetEmbed],
  allowedMentions: {
    // 填入需要触发提醒的用户ID数组
    users: [author.id],
    // 填入需要触发提醒的角色ID数组
    roles: ["角色ID1", "角色ID2"]
  }
})

如果需要允许所有在内容中出现的用户、角色提及,可配置parse: ["users", "roles"],但不推荐生产环境使用,容易造成垃圾提及。

  • 若使用 discord.py(v2.0+ 版本):
from discord import AllowedMentions

# 替换为你自己构造的Embed对象
target_embed = ...
# 构造允许提及规则
allowed_mentions = AllowedMentions(
  # 填入需要触发提醒的用户对象列表
  users=[author],
  # 填入需要触发提醒的角色对象列表
  roles=[target_role1, target_role2]
)
await channel.send(embed=target_embed, allowed_mentions=allowed_mentions)

如果需要全量允许所有提及类型,可使用AllowedMentions.all(),同样不推荐生产环境使用。

注意事项
  • 无需在消息正文content字段重复写入提及内容,只要allowed_mentions配置正确,Embed内的提及就可以触发对应提醒。
  • 之前想到的先发送@消息再删除的临时方案不要长期使用,频繁操作会触发Discord反垃圾检测,可能导致机器人被限制功能甚至封禁。
  • 其他Discord开发库的逻辑完全一致,只要找到对应allowed_mentions配置项,填入要提醒的用户、角色ID即可生效。
  • 如需提及全体成员/所有人,需要机器人持有对应服务器权限,同时在allowed_mentions中开启everyone配置才会触发提醒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:03