JDABuilder builder = JDABuilder.createDefault(token);
builder.enableIntents(GatewayIntent.GUILD_PRESENCES);
builder.enableIntents(GatewayIntent.GUILD_MEMBERS);
builder.enableCache(CacheFlag.ACTIVITY);
builder.setMemberCachePolicy(MemberCachePolicy.ONLINE);
builder.setChunkingFilter(ChunkingFilter.ALL);
this.jda = builder.build();
jda.addEventListener( new ActivityListener(jda));
public class ActivityListener extends ListenerAdapter {
private final JDA jda;
public ActivityListener(JDA jda) {
this.jda = jda;
}
@Override
public void onUserUpdateActivities(@NotNull UserUpdateActivitiesEvent event) {
super.onUserUpdateActivities(event);
System.out.println(event.getUser().getAsTag() + " " + event.getUser().getIdLong());
}
}
编辑:
我使用了jda.getUserCache();检查缓存是否工作,我是缓存,但它仍然不工作。
必须在事件激发之前缓存关联用户的成员。由于使用惰性加载,这可能需要一段时间,因为成员是通过消息或语音状态添加到缓存中的。
您可以使用setChunkingFilter(ChunkingFilter.all)在启动时热切地加载所有成员。
有一个bug导致这些事件无法触发,该bug已在4.2.1_264中修复。
我在某处读到,您每10分钟只能修改2个通道,但您发送的消息也是如此吗?或者您只能每10分钟执行更改/发送/创建两次这样的操作吗? 和之间有什么区别 提前致谢:D
我有一个问题,我正在使用discord.js播放音乐,但当我发送命令$stop时,我的bot没有离开语音通道,请帮助!
当用户使用搜索命令时,我的机器人将用结果和表情符号回复。如何检查用户是否单击此表情符号? 事件回复(idResults.getMovieResults()。获取(0)。toString())。队列();事件getChannel()。sendMessage(“单击将其添加到您关注的列表中”)。队列(msg)-
我正在制作一个不和谐的JDA机器人,当用户发送消息:前缀($)hastebin他们的代码时,机器人将创建一个请求hastebin并粘贴他们的代码,之后他将粘贴网址并打印到控制台(我将在解决问题后将其作为消息发送)。 这是我的HastebinCommand类: 这是我的Hastebin请求类: 我的错误: C:\Users\user\Documents\Java\Java Projects\Disc
我试图使用JDA编写一个discord bot,虽然我可以很容易地获得bot的存在,但我无法获得选定用户的存在。一个用例可能是用户输入类似的命令,然后机器人发送消息告诉用户他们正在玩什么游戏。据我所知,机器人不能在没有用户在场的情况下获得用户的游戏活动,我也看不到这样做的方法。如果我在文档中遗漏了它,请链接方法/类。
我已经在不和谐机器人上工作了几天。 起初只是简单的命令等,但慢慢地,我也致力于音乐机器人的主题。 我也使用YouTube数据API来实现这一点,到目前为止一切都正常。不过,我现在想合并一个Youtube搜索命令或将其构建到另一个(Play命令)中。我已经有半个搜索命令了。 到目前为止你可以做$play(歌名) 将选择找到的第一个轨迹。 然而,我希望能够看到前10个搜索结果,然后在它们之间进行选择。