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

如何在JDA中获取用户「关于我」描述与自定义状态?

在JDA中获取用户的「关于我」描述与自定义状态

获取「关于我」描述

用户的「关于我」描述存储在UserProfile对象中,需通过异步请求获取:

// 假设已获取到目标User对象
user.retrieveProfile()
    .queue(profile -> {
        String aboutMe = profile.getBio();
        System.out.println("用户的关于我:" + aboutMe);
    }, error -> {
        // 处理API请求错误(如权限不足)
        error.printStackTrace();
    });

若还未拿到User对象,可通过用户ID获取:

long targetUserId = 123456789L;
jda.retrieveUserById(targetUserId)
    .queue(user -> {
        user.retrieveProfile().queue(profile -> {
            String aboutMe = profile.getBio();
            System.out.println("用户的关于我:" + aboutMe);
        });
    });

获取自定义状态

自定义状态属于Activity的特定类型(Activity.Type.CUSTOM_STATUS),需从用户的Presence中读取:

// 假设已获取到目标User对象
Presence presence = user.getPresence();
for (Activity activity : presence.getActivities()) {
    if (activity.getType() == Activity.Type.CUSTOM_STATUS) {
        String statusText = activity.getName();
        // 处理自定义状态的表情
        String emojiInfo = activity.getEmoji() != null 
            ? activity.getEmoji().getName() + "(" + activity.getEmoji().getId() + ")" 
            : "无表情";
        System.out.println("自定义状态:" + emojiInfo + " " + statusText);
        break;
    }
}

注意事项

获取用户在线状态(Presence)需开启对应网关意图,创建JDA实例时需添加:

JDA jda = JDABuilder.createDefault("你的Bot令牌")
                    .enableIntents(GatewayIntent.GUILD_PRESENCES, GatewayIntent.GUILD_MEMBERS)
                    .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:35:18