Я предполагаю, что вы используете версию для разработчиков версии 4.2.0 (4.1.1_102 и выше)
В этих версиях были введены новые фабричные методы, чтобы люди знали о новом расколе API дизайн. В будущем боты будут ограничены членами кэша, которые по умолчанию подключены к голосовым каналам.
createDefault
/ createLight
будет кэшировать только участников, подключенных к голосовым каналам или владельцев гильдий (на первый взгляд) , Чтобы кэшировать больше участников, вам нужно включить намерение GUILD_MEMBERS
как на панели инструментов приложения для вашего бота, так и в JDA.
Теперь вы может сделать что-то вроде этого:
JDA api = JDABuilder.createDefault(token)
.setMemberCachePolicy(MemberCachePolicy.ALL)
.enableIntents(GatewayIntent.GUILD_MEMBERS)
.build();
Намерение GUILD_MEMBERS
необходимо, потому что оно позволяет диспетчеру GUILD_MEMBER_REMOVE
сообщать библиотеке об удалении члена из кэша, когда его выгнали / запретили / оставили.
Эта установка будет выполнять отложенную загрузку , что означает, что она будет начинаться только с голосовых участников и добавит больше участников в кэш, как только они станут активными.
Чтобы загрузить все элементы при запуске необходимо дополнительно включить членство членов :
JDABuilder.createDefault(token)
.setChunkingFilter(ChunkingFilter.ALL) // enable member chunking for all guilds
.setMemberCachePolicy(MemberCachePolicy.ALL) // ignored if chunking enabled
.enableIntents(GatewayIntent.GUILD_MEMBERS)
.build();
См. также: