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

Discord4j如何通过用户ID查询获取对应账号的用户名?

Discord4J 通过用户ID查询用户名的实现方案

有更简便的原生实现方案,不需要手动构造UserData对象。

核心实现方法

你可以直接使用GatewayDiscordClient或DiscordClient提供的getUserById方法,直接向Discord API发起请求拉取指定ID的用户完整信息,示例代码如下:

// 传入用户ID的Snowflake形式,参数可以直接填字符串格式的用户ID
Mono<User> userMono = gatewayDiscordClient.getUserById(Snowflake.of("123456789012345678"));

// 调用后即可直接获取用户名、判别号等信息
userMono.subscribe(user -> {
    String username = user.getUsername();
    String discriminator = user.getDiscriminator();
    // 后续业务逻辑
});

你之前用到的UserData.builder().build()方法属于手动构造离线用户对象的场景,仅适合你已经提前持有该用户所有字段信息的前提下使用,不需要调用API。

补充说明

  • 如果是需要查询指定服务器内的用户成员信息,还可以调用对应Guild对象的getMemberById(Snowflake.of("用户ID"))方法,返回的Member对象除了基础用户信息外,还包含服务器内昵称、角色、权限等专属数据。
  • 调用getUserById方法需要保证你的Bot已具备基础的用户信息读取权限,返回的Mono属于响应式流,需要通过subscribe、block(仅适合同步非响应式场景)等方式触发后才会实际发起API请求拉取数据。
  • 注意:不要在响应式业务逻辑中使用block方法,会阻塞事件循环线程引发性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:30:00