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

