问题描述
我正在尝试使用 JDA 编写一个不和谐的机器人,虽然我可以很容易地获得机器人的存在,但我无法获得选定用户的存在。一个示例用例可能是用户输入类似 !game
的命令,然后机器人发送一条消息告诉用户他们正在玩什么游戏。据我所知,机器人无法在没有用户存在的情况下获取用户的游戏活动,而且我看不到这样做的方法。如果我在文档中遗漏了它,请链接方法/类。
解决方法
经过大量的挖掘和文档阅读,我找到了一个解决方案。没有办法像我想的那样获得存在感,但由于我的初衷是获得游戏活动,所以这个解决方案是有效的。首先,机器人必须具有通过开发者门户授予的公会存在权限。然后我们需要在我们的 main 方法中调用 build 方法之前包含行 jdaBuilder.enableIntents(GatewayIntent.GUILD_PRESENCES);
。最后,要获取会员活动,我们需要包含 jdaBuilder.enableCache(CacheFlag.ACTIVITY);
。这让我们可以使用 member.getActivities()
方法。一般来说,获取与特定用户关联的数据需要启用公会状态。