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

如何在Discord.js中用用户标识而非ID强制获取用户?

问题解答

结论:不可行,你的代码调用本身不符合Discord API要求,且受限于平台机制无法实现跨服务器通过用户名获取用户信息。

  • 首先,client.users.fetch()方法的第一个参数仅接受用户ID(Snowflake格式字符串),不支持直接传入用户名。你传入用户名的调用方式本身就是错误的,无论设置force: true还是cache: true都无法生效,会直接抛出参数错误或返回无效结果。
  • 其次,Discord的用户名(包括用户昵称)并非全局唯一,即使加上用户标签(#XXXX),API也没有提供通过“用户名+标签”直接获取跨服务器用户的端点。只有用户ID是全局唯一且不可变的标识,Discord API仅支持通过ID直接获取用户信息。
  • 另外,受限于Discord的隐私机制,机器人无法获取与自己无交互(不在同一服务器、未发过私信)的用户信息,哪怕知道用户名也不行——这和哈希机制无关,而是API权限和隐私设计的限制。

替代方案

如果需要通过用户名查找用户,只能遍历机器人所在的所有服务器,在每个服务器的成员列表中匹配“用户名+标签”,但这种方式效率极低,且无法找到不在任何机器人所在服务器的用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:14:50