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
相关产品推荐
相关产品推荐

