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

如何将Discord用户名与鉴别器转换为ID以实现Webhook提及?

解决Discord.js Webhook通过用户名触发用户提及的问题

核心原因

Discord的消息提及机制仅支持基于用户ID的语法(<@用户ID>),直接发送@username#1234只会被当作普通文本渲染,无法触发蓝色提及样式和通知——因为Discord不会通过用户名+鉴别器来解析提及目标。

可行解决方案

要实现通过用户名自动触发提及,必须先将用户名+鉴别器转换为用户ID,具体步骤如下:

1. 借助Discord Bot获取用户ID

Webhook本身没有查询用户信息的权限,需要搭配一个已加入目标服务器的Discord Bot(需拥有GUILD_MEMBERS权限),通过Bot检索服务器成员列表匹配目标用户:

// 假设你已获取Webhook所在的Guild对象
const targetUsername = "username";
const targetDiscriminator = "1234";

// 从服务器成员缓存中匹配用户
const matchedMember = guild.members.cache.find(member => 
  member.user.username === targetUsername && member.user.discriminator === targetDiscriminator
);

if (matchedMember) {
  // 使用用户ID发送标准提及
  webhook.send(`<@${matchedMember.user.id}>`);
} else {
  // 目标用户不在当前服务器,无法获取ID,只能发送文本提示
  webhook.send(`无法找到用户 @${targetUsername}#${targetDiscriminator}`);
}

2. 注意事项

  • 若目标用户不在Webhook所在的服务器,Bot无法获取其ID,这种情况下无法触发官方提及,只能显示文本。
  • 针对Discord新注册用户(无鉴别器,鉴别器统一为0),只需匹配用户名即可,但仍需转换为ID才能触发提及。

不存在的捷径

目前Discord没有提供直接通过用户名+鉴别器发送提及的语法,所有有效提及都必须基于用户ID实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:10:28