diff --git a/src/main/java/net/dv8tion/jda/api/Permission.java b/src/main/java/net/dv8tion/jda/api/Permission.java index c1c0d739fe..ce47391192 100644 --- a/src/main/java/net/dv8tion/jda/api/Permission.java +++ b/src/main/java/net/dv8tion/jda/api/Permission.java @@ -15,10 +15,14 @@ */ package net.dv8tion.jda.api; +import net.dv8tion.jda.api.events.GenericEvent; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; import net.dv8tion.jda.internal.utils.Checks; import javax.annotation.Nonnull; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; /** @@ -257,4 +261,48 @@ public static long getRaw(@Nonnull Collection permissions) return getRaw(permissions.toArray(EMPTY_PERMISSIONS)); } + + /** + * Parse the required permissions from the provided {@link GenericEvent Event Types}. + * + * @param events + * The event types + * + * @throws IllegalArgumentException + * If provided with null + * + * @return {@link EnumSet} for the required permissions + */ + @Nonnull + @SafeVarargs + public static EnumSet fromEvents(@Nonnull Class... events) + { + Checks.noneNull(events, "Event"); + return fromEvents(Arrays.asList(events)); + } + + /** + * Parse the required permissions from the provided {@link GenericEvent Event Types}. + * + * @param events + * The event types + * + * @throws IllegalArgumentException + * If provided with null + * + * @return {@link EnumSet} for the required permissions + */ + @Nonnull + public static EnumSet fromEvents(@Nonnull Collection> events) + { + Checks.noneNull(events, "Events"); + EnumSet flags = EnumSet.noneOf(Permission.class); + for (Class event : events) + { + final RequiredPermissions requiredPermissions = event.getDeclaredAnnotation(RequiredPermissions.class); + if (requiredPermissions != null) + Collections.addAll(flags, requiredPermissions.always()); + } + return flags; + } } diff --git a/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredCacheFlags.java b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredCacheFlags.java new file mode 100644 index 0000000000..37b7b51e81 --- /dev/null +++ b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredCacheFlags.java @@ -0,0 +1,49 @@ +/* + * Copyright 2015 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.dv8tion.jda.api.events.annotations; + +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.utils.cache.CacheFlag; + +import java.lang.annotation.*; + +/** + * Annotates the required cache flags for this event. + *
This is used by {@link CacheFlag#fromEvents(Class[])} + * to determine which cache flags are required and/or optional for a given event type. + * + * @see CacheFlag#fromEvents(Class[]) + * @see JDABuilder#enableCache(CacheFlag, CacheFlag...) + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RequiredCacheFlags +{ + /** + * Cache flags required for the annotated event to fire. + */ + CacheFlag[] always() default {}; + + /** + * Cache flags which may be required for certain methods of the annotated event, + * or which may help fire the event under certain conditions. + * + *

The details should be documented on the annotated event. + */ + CacheFlag[] sometimes() default {}; +} diff --git a/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredIntents.java b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredIntents.java new file mode 100644 index 0000000000..17d259b6df --- /dev/null +++ b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredIntents.java @@ -0,0 +1,49 @@ +/* + * Copyright 2015 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.dv8tion.jda.api.events.annotations; + +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.requests.GatewayIntent; + +import java.lang.annotation.*; + +/** + * Annotates the required intents for this event. + *
This is used by {@link GatewayIntent#fromEvents(Class[])} + * to determine which intents are required and/or optional for a given event type. + * + * @see GatewayIntent#fromEvents(Class[]) + * @see JDABuilder#enableIntents(GatewayIntent, GatewayIntent...) + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RequiredIntents +{ + /** + * Gateway intents required for the annotated event to fire. + */ + GatewayIntent[] always() default {}; + + /** + * Gateway intents which may be required for certain methods of the annotated event, + * or which may help fire the event under certain conditions. + * + *

The details should be documented on the annotated event. + */ + GatewayIntent[] sometimes() default {}; +} diff --git a/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredPermissions.java b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredPermissions.java new file mode 100644 index 0000000000..72941988c7 --- /dev/null +++ b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiredPermissions.java @@ -0,0 +1,48 @@ +/* + * Copyright 2015 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.dv8tion.jda.api.events.annotations; + +import net.dv8tion.jda.api.Permission; +import net.dv8tion.jda.api.entities.IPermissionHolder; +import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; + +import java.lang.annotation.*; + +/** + * Annotates the required and/or optional permissions on this event. + * + * @see Permission#fromEvents(Class[]) + * @see IPermissionHolder#hasPermission(GuildChannel, Permission...) + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RequiredPermissions +{ + /** + * Permissions required for the annotated event to fire. + */ + Permission[] always() default {}; + + /** + * Permissions which may be required for certain methods of the annotated event, + * or which may help fire the event under certain conditions. + * + *

The details should be documented on the annotated event. + */ + Permission[] sometimes() default {}; +} diff --git a/src/main/java/net/dv8tion/jda/api/events/annotations/RequiresCachedMember.java b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiresCachedMember.java new file mode 100644 index 0000000000..51a0d7c60f --- /dev/null +++ b/src/main/java/net/dv8tion/jda/api/events/annotations/RequiresCachedMember.java @@ -0,0 +1,51 @@ +/* + * Copyright 2015 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.dv8tion.jda.api.events.annotations; + +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.ChunkingFilter; +import net.dv8tion.jda.api.utils.MemberCachePolicy; + +import java.lang.annotation.*; + +/** + * Annotates this event as requiring a cached member to fire, + * or a method requiring a cached member to return appropriate results. + * + *

For a member/user to be cached, {@link GatewayIntent#GUILD_MEMBERS GatewayIntent.GUILD_MEMBERS} needs to be enabled, + * and the {@link MemberCachePolicy} configured to allow some, if not all, members to be cached. + *
Assuming the cache policy allows a member to be cached, the member will be loaded in the cache when either: + *

    + *
  • JDA loads it on startup, if a {@link ChunkingFilter} is configured
  • + *
  • It is loaded explicitly, for example, using {@link Guild#retrieveMemberById(long)}
  • + *
  • An event containing a member is received, such as {@link SlashCommandInteractionEvent}
  • + *
+ * + * @see MemberCachePolicy + * @see ChunkingFilter + * @see JDABuilder#setMemberCachePolicy(MemberCachePolicy) + * @see JDABuilder#setChunkingFilter(ChunkingFilter) + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface RequiresCachedMember +{ +} diff --git a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModExecutionEvent.java b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModExecutionEvent.java index 0cf7bb5fb4..4aaddf4236 100644 --- a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModExecutionEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModExecutionEvent.java @@ -17,6 +17,7 @@ package net.dv8tion.jda.api.events.automod; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.automod.AutoModExecution; import net.dv8tion.jda.api.entities.automod.AutoModResponse; @@ -24,6 +25,8 @@ import net.dv8tion.jda.api.entities.automod.AutoModTriggerType; import net.dv8tion.jda.api.entities.channel.unions.GuildMessageChannelUnion; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -37,6 +40,8 @@ *
This event will only fire for guilds where the bot has the {@link net.dv8tion.jda.api.Permission#MANAGE_SERVER MANAGE_SERVER} permission. * Additionally, access to {@link #getContent()} and {@link #getMatchedContent()} requires the {@link GatewayIntent#MESSAGE_CONTENT MESSAGE_CONTENT} intent to be enabled. */ +@RequiredIntents(always = GatewayIntent.AUTO_MODERATION_EXECUTION, sometimes = GatewayIntent.MESSAGE_CONTENT) +@RequiredPermissions(always = Permission.MANAGE_SERVER) public class AutoModExecutionEvent extends Event implements AutoModExecution { private final AutoModExecution execution; diff --git a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleCreateEvent.java b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleCreateEvent.java index 39ca2dd33d..5304b8302b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleCreateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleCreateEvent.java @@ -17,7 +17,11 @@ package net.dv8tion.jda.api.events.automod; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.automod.AutoModRule; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -29,6 +33,8 @@ *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#AUTO_MODERATION_CONFIGURATION AUTO_MODERATION_CONFIGURATION} intent to be enabled. *
This event will only fire for guilds where the bot has the {@link net.dv8tion.jda.api.Permission#MANAGE_SERVER MANAGE_SERVER} permission. */ +@RequiredIntents(always = GatewayIntent.AUTO_MODERATION_CONFIGURATION) +@RequiredPermissions(always = Permission.MANAGE_SERVER) public class AutoModRuleCreateEvent extends GenericAutoModRuleEvent { public AutoModRuleCreateEvent(@Nonnull JDA api, long responseNumber, @Nonnull AutoModRule rule) diff --git a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleDeleteEvent.java index a086702d16..eab003a1d8 100644 --- a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleDeleteEvent.java @@ -17,7 +17,11 @@ package net.dv8tion.jda.api.events.automod; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.automod.AutoModRule; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -29,6 +33,8 @@ *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#AUTO_MODERATION_CONFIGURATION AUTO_MODERATION_CONFIGURATION} intent to be enabled. *
This event will only fire for guilds where the bot has the {@link net.dv8tion.jda.api.Permission#MANAGE_SERVER MANAGE_SERVER} permission. */ +@RequiredIntents(always = GatewayIntent.AUTO_MODERATION_CONFIGURATION) +@RequiredPermissions(always = Permission.MANAGE_SERVER) public class AutoModRuleDeleteEvent extends GenericAutoModRuleEvent { public AutoModRuleDeleteEvent(@Nonnull JDA api, long responseNumber, @Nonnull AutoModRule rule) diff --git a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleUpdateEvent.java index a3a2149417..1653b34ad6 100644 --- a/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/automod/AutoModRuleUpdateEvent.java @@ -17,7 +17,11 @@ package net.dv8tion.jda.api.events.automod; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.automod.AutoModRule; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -29,6 +33,8 @@ *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#AUTO_MODERATION_CONFIGURATION AUTO_MODERATION_CONFIGURATION} intent to be enabled. *
This event will only fire for guilds where the bot has the {@link net.dv8tion.jda.api.Permission#MANAGE_SERVER MANAGE_SERVER} permission. */ +@RequiredIntents(always = GatewayIntent.AUTO_MODERATION_CONFIGURATION) +@RequiredPermissions(always = Permission.MANAGE_SERVER) public class AutoModRuleUpdateEvent extends GenericAutoModRuleEvent { public AutoModRuleUpdateEvent(@Nonnull JDA api, long responseNumber, @Nonnull AutoModRule rule) diff --git a/src/main/java/net/dv8tion/jda/api/events/automod/GenericAutoModRuleEvent.java b/src/main/java/net/dv8tion/jda/api/events/automod/GenericAutoModRuleEvent.java index 0e930e6947..cd2f04b526 100644 --- a/src/main/java/net/dv8tion/jda/api/events/automod/GenericAutoModRuleEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/automod/GenericAutoModRuleEvent.java @@ -17,8 +17,12 @@ package net.dv8tion.jda.api.events.automod; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.automod.AutoModRule; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -30,6 +34,8 @@ *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#AUTO_MODERATION_CONFIGURATION AUTO_MODERATION_CONFIGURATION} intent to be enabled. *
These events will only fire for guilds where the bot has the {@link net.dv8tion.jda.api.Permission#MANAGE_SERVER MANAGE_SERVER} permission. */ +@RequiredIntents(always = GatewayIntent.AUTO_MODERATION_CONFIGURATION) +@RequiredPermissions(always = Permission.MANAGE_SERVER) public class GenericAutoModRuleEvent extends Event { private final AutoModRule rule; diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagAddEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagAddEvent.java index 25c2a51ffc..147d8e65fe 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagAddEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagAddEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -33,6 +35,7 @@ * This requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#FORUM_TAGS CacheFlag.FORUM_TAGS} to be enabled. * {@link net.dv8tion.jda.api.JDABuilder#createLight(String, Collection) JDABuilder.createLight(...)} disables this by default. */ +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public class ForumTagAddEvent extends GenericForumTagEvent { public ForumTagAddEvent(@Nonnull JDA api, long responseNumber, @Nonnull IPostContainer channel, @Nonnull ForumTag tag) diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagRemoveEvent.java index 3b4ee3103e..2ca486ad48 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/ForumTagRemoveEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -33,6 +35,7 @@ * This requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#FORUM_TAGS CacheFlag.FORUM_TAGS} to be enabled. * {@link net.dv8tion.jda.api.JDABuilder#createLight(String, Collection) JDABuilder.createLight(...)} disables this by default. */ +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public class ForumTagRemoveEvent extends GenericForumTagEvent { public ForumTagRemoveEvent(@Nonnull JDA api, long responseNumber, @Nonnull IPostContainer channel, @Nonnull ForumTag tag) diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/GenericForumTagEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/GenericForumTagEvent.java index 95226446d5..b8d00609f9 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/GenericForumTagEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/GenericForumTagEvent.java @@ -21,6 +21,8 @@ import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -32,6 +34,7 @@ * This requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#FORUM_TAGS CacheFlag.FORUM_TAGS} to be enabled. * {@link net.dv8tion.jda.api.JDABuilder#createLight(String, Collection) JDABuilder.createLight(...)} disables this by default. */ +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public abstract class GenericForumTagEvent extends Event { protected final IPostContainer channel; diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateEmojiEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateEmojiEvent.java index 22ec23c96d..0bf4cc7693 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateEmojiEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateEmojiEvent.java @@ -20,6 +20,8 @@ import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; import net.dv8tion.jda.api.entities.emoji.EmojiUnion; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -34,6 +36,7 @@ * *

Identifier: {@code emoji} */ +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public class ForumTagUpdateEmojiEvent extends GenericForumTagUpdateEvent { public static final String IDENTIFIER = "emoji"; diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateModeratedEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateModeratedEvent.java index 586c0bc1e3..55db0d0b2e 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateModeratedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateModeratedEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -33,6 +35,7 @@ *

Identifier: {@code moderated} */ @SuppressWarnings("ConstantConditions") +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public class ForumTagUpdateModeratedEvent extends GenericForumTagUpdateEvent { public static final String IDENTIFIER = "moderated"; diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateNameEvent.java index 677428e8ec..03b7d1ef2d 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/ForumTagUpdateNameEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -33,6 +35,7 @@ *

Identifier: {@code name} */ @SuppressWarnings("ConstantConditions") +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public class ForumTagUpdateNameEvent extends GenericForumTagUpdateEvent { public static final String IDENTIFIER = "name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/GenericForumTagUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/GenericForumTagUpdateEvent.java index b2a803bcdb..7d15e6597b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/GenericForumTagUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/channel/forum/update/GenericForumTagUpdateEvent.java @@ -21,7 +21,9 @@ import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; import net.dv8tion.jda.api.events.channel.forum.GenericForumTagEvent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Collection; @@ -36,6 +38,7 @@ * @param * The type of the updated field */ +@RequiredCacheFlags(always = CacheFlag.FORUM_TAGS) public abstract class GenericForumTagUpdateEvent extends GenericForumTagEvent implements UpdateEvent { private final T previous; diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiAddedEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiAddedEvent.java index 8d0ae477f9..bc1d959913 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiAddedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiAddedEvent.java @@ -18,6 +18,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -31,6 +35,8 @@ * *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public class EmojiAddedEvent extends GenericEmojiEvent { public EmojiAddedEvent(@Nonnull JDA api, long responseNumber, @Nonnull RichCustomEmoji emoji) diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiRemovedEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiRemovedEvent.java index fb713c433d..5d68f188a3 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiRemovedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/EmojiRemovedEvent.java @@ -18,6 +18,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -31,6 +35,8 @@ * *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public class EmojiRemovedEvent extends GenericEmojiEvent { public EmojiRemovedEvent(@Nonnull JDA api, long responseNumber, @Nonnull RichCustomEmoji emoji) diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/GenericEmojiEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/GenericEmojiEvent.java index 5d49a6574b..45c0cd678b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/GenericEmojiEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/GenericEmojiEvent.java @@ -20,6 +20,10 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -33,6 +37,8 @@ * *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public abstract class GenericEmojiEvent extends Event { protected final RichCustomEmoji emoji; diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateNameEvent.java index d9e1c08ba3..1c5b3b2d21 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateNameEvent.java @@ -18,6 +18,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -35,6 +39,8 @@ * *

Identifier: {@code name} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public class EmojiUpdateNameEvent extends GenericEmojiUpdateEvent { public static final String IDENTIFIER = "name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateRolesEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateRolesEvent.java index 4930d1bac1..a93eca191a 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateRolesEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/update/EmojiUpdateRolesEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.List; @@ -37,6 +41,8 @@ * *

Identifier: {@code roles} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public class EmojiUpdateRolesEvent extends GenericEmojiUpdateEvent> { public static final String IDENTIFIER = "roles"; diff --git a/src/main/java/net/dv8tion/jda/api/events/emoji/update/GenericEmojiUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/emoji/update/GenericEmojiUpdateEvent.java index e8e07af094..e5ff60beed 100644 --- a/src/main/java/net/dv8tion/jda/api/events/emoji/update/GenericEmojiUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/emoji/update/GenericEmojiUpdateEvent.java @@ -19,7 +19,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.emoji.RichCustomEmoji; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.emoji.GenericEmojiEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -34,6 +38,8 @@ * *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.EMOJI) public abstract class GenericEmojiUpdateEvent extends GenericEmojiEvent implements UpdateEvent { protected final T previous; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/GuildAuditLogEntryCreateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/GuildAuditLogEntryCreateEvent.java index 6ba66bc9db..49e9c24ce6 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/GuildAuditLogEntryCreateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/GuildAuditLogEntryCreateEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.audit.AuditLogEntry; import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -32,6 +34,7 @@ * *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_MODERATION GUILD_MODERATION} intent to be enabled. */ +@RequiredIntents(always = GatewayIntent.GUILD_MODERATION) public class GuildAuditLogEntryCreateEvent extends GenericGuildEvent { private final AuditLogEntry entry; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/GuildBanEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/GuildBanEvent.java index cbc2a87bff..6ac7d9f321 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/GuildBanEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/GuildBanEvent.java @@ -18,6 +18,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -33,6 +35,7 @@ * * @see net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent */ +@RequiredIntents(always = GatewayIntent.GUILD_MODERATION) public class GuildBanEvent extends GenericGuildEvent { private final User user; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/GuildUnbanEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/GuildUnbanEvent.java index 18a151d313..14f42bb4b3 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/GuildUnbanEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/GuildUnbanEvent.java @@ -18,6 +18,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -30,6 +32,7 @@ * *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_MODERATION GUILD_MODERATION} intent to be enabled. */ +@RequiredIntents(always = GatewayIntent.GUILD_MODERATION) public class GuildUnbanEvent extends GenericGuildEvent { private final User user; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GenericGuildInviteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GenericGuildInviteEvent.java index ac37d4f5e9..5e431460c1 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GenericGuildInviteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GenericGuildInviteEvent.java @@ -17,12 +17,16 @@ package net.dv8tion.jda.api.events.guild.invite; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Invite; import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.unions.GuildChannelUnion; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -37,6 +41,8 @@ *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_INVITES GUILD_INVITES} intent to be enabled. *
These events will only fire for invite events that occur in channels where you can {@link net.dv8tion.jda.api.Permission#MANAGE_CHANNEL MANAGE_CHANNEL}. */ +@RequiredIntents(always = GatewayIntent.GUILD_INVITES) +@RequiredPermissions(always = Permission.MANAGE_CHANNEL) public class GenericGuildInviteEvent extends GenericGuildEvent { private final String code; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteCreateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteCreateEvent.java index 4a16006f8c..d6f9bbf226 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteCreateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteCreateEvent.java @@ -17,8 +17,12 @@ package net.dv8tion.jda.api.events.guild.invite; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Invite; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -32,6 +36,8 @@ *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_INVITES GUILD_INVITES} intent to be enabled. *
This event will only fire for invites created in channels where you can {@link net.dv8tion.jda.api.Permission#MANAGE_CHANNEL MANAGE_CHANNEL}. */ +@RequiredIntents(always = GatewayIntent.GUILD_INVITES) +@RequiredPermissions(always = Permission.MANAGE_CHANNEL) public class GuildInviteCreateEvent extends GenericGuildInviteEvent { private final Invite invite; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteDeleteEvent.java index 83eec93536..bdda66f748 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/invite/GuildInviteDeleteEvent.java @@ -17,9 +17,13 @@ package net.dv8tion.jda.api.events.guild.invite; import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Invite; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiredPermissions; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -33,6 +37,8 @@ *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_INVITES GUILD_INVITES} intent to be enabled. *
This event will only fire for invites deleted in channels where you can {@link net.dv8tion.jda.api.Permission#MANAGE_CHANNEL MANAGE_CHANNEL}. */ +@RequiredIntents(always = GatewayIntent.GUILD_INVITES) +@RequiredPermissions(always = Permission.MANAGE_CHANNEL) public class GuildInviteDeleteEvent extends GenericGuildInviteEvent { public GuildInviteDeleteEvent(@Nonnull JDA api, long responseNumber, @Nonnull String code, @Nonnull GuildChannel channel) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GenericGuildMemberEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GenericGuildMemberEvent.java index 10ce303ca8..42fdfca1d6 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GenericGuildMemberEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GenericGuildMemberEvent.java @@ -18,7 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -26,12 +28,15 @@ * Indicates that a {@link net.dv8tion.jda.api.entities.Guild Guild} member event is fired. *
Every GuildMemberEvent is an instance of this event and can be casted. * + *

Can be used to detect any GuildMemberEvent. + * + *

Requirements
+ * *

Most of these events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_MEMBERS GUILD_MEMBERS} intent to be enabled. *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! - * - *

Can be used to detect any GuildMemberEvent. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) public abstract class GenericGuildMemberEvent extends GenericGuildEvent { private final Member member; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberJoinEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberJoinEvent.java index 4a1620fb20..cd0641d43f 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberJoinEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberJoinEvent.java @@ -17,6 +17,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -31,6 +33,7 @@ *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) public class GuildMemberJoinEvent extends GenericGuildMemberEvent { public GuildMemberJoinEvent(@Nonnull JDA api, long responseNumber, @Nonnull Member member) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRemoveEvent.java index ccda093be1..bc123305e8 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRemoveEvent.java @@ -20,7 +20,9 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -39,6 +41,7 @@ *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) public class GuildMemberRemoveEvent extends GenericGuildEvent { private final User user; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleAddEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleAddEvent.java index 7c01d8adac..64b904f480 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleAddEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleAddEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import java.util.Collections; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberRoleAddEvent extends GenericGuildMemberEvent { private final List addedRoles; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleRemoveEvent.java index a1ca9710db..95dfd46bfb 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberRoleRemoveEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import java.util.Collections; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberRoleRemoveEvent extends GenericGuildMemberEvent { private final List removedRoles; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberUpdateEvent.java index a26731edea..e67e5c98b1 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/GuildMemberUpdateEvent.java @@ -18,6 +18,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -38,6 +40,7 @@ * * @since 4.2.1 */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) public class GuildMemberUpdateEvent extends GenericGuildMemberEvent { public GuildMemberUpdateEvent(@Nonnull JDA api, long responseNumber, @Nonnull Member member) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GenericGuildMemberUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GenericGuildMemberUpdateEvent.java index 29c1c0b59b..3e199faac4 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GenericGuildMemberUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GenericGuildMemberUpdateEvent.java @@ -18,7 +18,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.events.guild.member.GenericGuildMemberEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -40,6 +43,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public abstract class GenericGuildMemberUpdateEvent extends GenericGuildMemberEvent implements UpdateEvent { protected final T previous; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateAvatarEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateAvatarEvent.java index 4bedaf8997..b41e3c9d86 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateAvatarEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateAvatarEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.ImageProxy; import javax.annotation.Nonnull; @@ -41,6 +44,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdateAvatarEvent extends GenericGuildMemberUpdateEvent { public static final String IDENTIFIER = "avatar"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateBoostTimeEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateBoostTimeEvent.java index 025aba4969..e7c9f71aaa 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateBoostTimeEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateBoostTimeEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -42,6 +45,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdateBoostTimeEvent extends GenericGuildMemberUpdateEvent { public static final String IDENTIFIER = "boost_time"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateFlagsEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateFlagsEvent.java index 3c4555efd6..c4381b8681 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateFlagsEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateFlagsEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import java.util.EnumSet; @@ -38,6 +41,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdateFlagsEvent extends GenericGuildMemberUpdateEvent> { public static final String IDENTIFIER = "flags"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateNicknameEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateNicknameEvent.java index 2ebb89d70f..b408a74a8b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateNicknameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateNicknameEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -40,6 +43,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdateNicknameEvent extends GenericGuildMemberUpdateEvent { public static final String IDENTIFIER = "nick"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdatePendingEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdatePendingEvent.java index 0cc9164528..94a572a4f3 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdatePendingEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdatePendingEvent.java @@ -19,6 +19,9 @@ import net.dv8tion.jda.annotations.Incubating; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -45,6 +48,8 @@ * @since 4.2.1 */ @Incubating +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdatePendingEvent extends GenericGuildMemberUpdateEvent { public static final String IDENTIFIER = "pending"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateTimeOutEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateTimeOutEvent.java index 90a949ebe2..defa6375bc 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateTimeOutEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/member/update/GuildMemberUpdateTimeOutEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -42,6 +45,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class GuildMemberUpdateTimeOutEvent extends GenericGuildMemberUpdateEvent { public static final String IDENTIFIER = "timeout_time"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/override/GenericPermissionOverrideEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/override/GenericPermissionOverrideEvent.java index 4b2130e385..dd5f24344c 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/override/GenericPermissionOverrideEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/override/GenericPermissionOverrideEvent.java @@ -25,7 +25,9 @@ import net.dv8tion.jda.api.entities.channel.attribute.IPermissionContainer; import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel; import net.dv8tion.jda.api.entities.channel.unions.IPermissionContainerUnion; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -35,7 +37,14 @@ *
Every guild channel override event is a subclass of this event and can be casted * *

Can be used to detect that any guild channel override event was fired + * + *

Requirements
+ * + *

These events require {@link CacheFlag#MEMBER_OVERRIDES} to be enabled for member overrides, + * unless the member is the {@link net.dv8tion.jda.api.entities.Guild#getSelfMember() self member}. + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredCacheFlags(sometimes = CacheFlag.MEMBER_OVERRIDES) public class GenericPermissionOverrideEvent extends GenericGuildEvent { protected final IPermissionContainer channel; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideCreateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideCreateEvent.java index 4418f0bd54..034595296a 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideCreateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideCreateEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.PermissionOverride; import net.dv8tion.jda.api.entities.channel.attribute.IPermissionContainer; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -26,7 +28,17 @@ * Indicates that a {@link PermissionOverride} in a {@link IPermissionContainer guild channel} has been created. * *

Can be used to retrieve the new override. + * + *

Note: This event will also be fired when the {@link net.dv8tion.jda.api.entities.Guild#getPublicRole() @everyone} override + * is modified, but previously had no allowed/denied permissions. + * + *

Requirements
+ * + *

These events require {@link CacheFlag#MEMBER_OVERRIDES} to be enabled for member overrides, + * unless the member is the {@link net.dv8tion.jda.api.entities.Guild#getSelfMember() self member}. + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredCacheFlags(sometimes = CacheFlag.MEMBER_OVERRIDES) public class PermissionOverrideCreateEvent extends GenericPermissionOverrideEvent { public PermissionOverrideCreateEvent(@Nonnull JDA api, long responseNumber, @Nonnull IPermissionContainer channel, @Nonnull PermissionOverride override) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideDeleteEvent.java index b19fe6d3e7..7edb7ca023 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideDeleteEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.PermissionOverride; import net.dv8tion.jda.api.entities.channel.attribute.IPermissionContainer; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -26,7 +28,17 @@ * Indicates that a {@link PermissionOverride} in a {@link IPermissionContainer guild channel} has been deleted. * *

Can be used to retrieve the old override. + * + *

Note: This event will also be fired when the {@link net.dv8tion.jda.api.entities.Guild#getPublicRole() @everyone} override + * previously had allowed/denied permissions, but has been cleared. + * + *

Requirements
+ * + *

These events require {@link CacheFlag#MEMBER_OVERRIDES} to be enabled for member overrides, + * unless the member is the {@link net.dv8tion.jda.api.entities.Guild#getSelfMember() self member}. + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredCacheFlags(sometimes = CacheFlag.MEMBER_OVERRIDES) public class PermissionOverrideDeleteEvent extends GenericPermissionOverrideEvent { public PermissionOverrideDeleteEvent(@Nonnull JDA api, long responseNumber, @Nonnull IPermissionContainer channel, @Nonnull PermissionOverride override) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideUpdateEvent.java index ea9aac56f4..f8756ba3a4 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/override/PermissionOverrideUpdateEvent.java @@ -20,6 +20,8 @@ import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.PermissionOverride; import net.dv8tion.jda.api.entities.channel.attribute.IPermissionContainer; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.EnumSet; @@ -28,7 +30,20 @@ * Indicates that a {@link PermissionOverride} in a {@link IPermissionContainer guild channel} has been updated. * *

Can be used to retrieve the updated override and old {@link #getOldAllow() allow} and {@link #getOldDeny() deny}. + * + *

Note: This event will not be fired when the {@link net.dv8tion.jda.api.entities.Guild#getPublicRole() @everyone} override: + *

    + *
  • Is modified, but previously had no allowed/denied permissions, in which case {@link PermissionOverrideCreateEvent} is fired
  • + *
  • Had allowed/denied permissions, but has been cleared, in which case {@link PermissionOverrideDeleteEvent} is fired
  • + *
+ * + *

Requirements
+ * + *

These events require {@link CacheFlag#MEMBER_OVERRIDES} to be enabled for member overrides, + * unless the member is the {@link net.dv8tion.jda.api.entities.Guild#getSelfMember() self member}. + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredCacheFlags(sometimes = CacheFlag.MEMBER_OVERRIDES) public class PermissionOverrideUpdateEvent extends GenericPermissionOverrideEvent { private final long oldAllow, oldDeny; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventGatewayEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventGatewayEvent.java index bd287310ae..2d9da3a064 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventGatewayEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventGatewayEvent.java @@ -17,7 +17,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -33,12 +36,13 @@ *

Requirements
* *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

This class may be used to check if a gateway event is related to a {@link ScheduledEvent} * as all gateway events in the {@link net.dv8tion.jda.api.events.guild.scheduledevent} package extend this class. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public abstract class GenericScheduledEventGatewayEvent extends GenericGuildEvent { protected final ScheduledEvent scheduledEvent; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventUserEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventUserEvent.java index 403b489a83..da5b05d95b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventUserEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/GenericScheduledEventUserEvent.java @@ -19,6 +19,9 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.ScheduledEvent; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.api.requests.restaction.CacheRestAction; import net.dv8tion.jda.api.utils.cache.CacheFlag; @@ -36,9 +39,10 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public abstract class GenericScheduledEventUserEvent extends GenericScheduledEventGatewayEvent { private final long userId; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventCreateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventCreateEvent.java index 9d121b2fa2..1f39201cab 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventCreateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventCreateEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -29,9 +32,10 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventCreateEvent extends GenericScheduledEventGatewayEvent { public ScheduledEventCreateEvent(@Nonnull JDA api, long responseNumber, @Nonnull ScheduledEvent scheduledEvent) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventDeleteEvent.java index 9f4c2b8f31..5e5e09264d 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventDeleteEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -29,9 +32,10 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventDeleteEvent extends GenericScheduledEventGatewayEvent { public ScheduledEventDeleteEvent(@Nonnull JDA api, long responseNumber, @Nonnull ScheduledEvent scheduledEvent) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserAddEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserAddEvent.java index 1e37dccb75..c662c40c71 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserAddEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserAddEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -30,9 +33,10 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUserAddEvent extends GenericScheduledEventUserEvent { public ScheduledEventUserAddEvent(@Nonnull JDA api, long responseNumber, @Nonnull ScheduledEvent scheduledEvent, long userId) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserRemoveEvent.java index e3358a302e..f067246702 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/ScheduledEventUserRemoveEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -30,9 +33,10 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUserRemoveEvent extends GenericScheduledEventUserEvent { public ScheduledEventUserRemoveEvent(@Nonnull JDA api, long responseNumber, @Nonnull ScheduledEvent scheduledEvent, long userId) diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/GenericScheduledEventUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/GenericScheduledEventUpdateEvent.java index 5e3b7acde5..8e266ab7b5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/GenericScheduledEventUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/GenericScheduledEventUpdateEvent.java @@ -19,7 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.guild.scheduledevent.GenericScheduledEventGatewayEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,13 +41,14 @@ *

Requirements
* *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public abstract class GenericScheduledEventUpdateEvent extends GenericScheduledEventGatewayEvent implements UpdateEvent { protected final T previous; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateDescriptionEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateDescriptionEvent.java index e6c4ce7ec1..5d14e6ed86 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateDescriptionEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateDescriptionEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -32,13 +35,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateDescriptionEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "description"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateEndTimeEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateEndTimeEvent.java index dac9f8de29..f77a56c653 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateEndTimeEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateEndTimeEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -33,13 +36,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateEndTimeEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "end_time"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateImageEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateImageEvent.java index 541916fe62..2d79959639 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateImageEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateImageEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -31,13 +34,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateImageEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "image"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateLocationEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateLocationEvent.java index b9d20b8b7c..6b8b792e94 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateLocationEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateLocationEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -31,13 +34,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateLocationEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "location"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateNameEvent.java index afdc918aae..43c1082e0d 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateNameEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -31,13 +34,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateNameEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStartTimeEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStartTimeEvent.java index b55bbd9def..2b1756de0e 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStartTimeEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStartTimeEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -32,13 +35,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateStartTimeEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "start_time"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStatusEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStatusEvent.java index c67977ddf6..cfed5ac7e0 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStatusEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/ScheduledEventUpdateStatusEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.ScheduledEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -32,13 +35,14 @@ *

Requirements
* *

This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link ScheduledEvent ScheduledEvent} object. * In order to fire a specific event like this we need to have the old {@link ScheduledEvent ScheduledEvent} cached to compare against. */ +@RequiredIntents(always = GatewayIntent.SCHEDULED_EVENTS) +@RequiredCacheFlags(always = CacheFlag.SCHEDULED_EVENTS) public class ScheduledEventUpdateStatusEvent extends GenericScheduledEventUpdateEvent { public static final String IDENTIFIER = "status"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/package-info.java b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/package-info.java index 3fbb94114c..6b55d7f5b5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/package-info.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/scheduledevent/update/package-info.java @@ -20,8 +20,7 @@ *

Requirements
* *

These events require the {@link net.dv8tion.jda.api.requests.GatewayIntent#SCHEDULED_EVENTS SCHEDULED_EVENTS} intent and {@link net.dv8tion.jda.api.utils.cache.CacheFlag#SCHEDULED_EVENTS} to be enabled. - *
{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and - * {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default! + *
{@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables this by default! * *

Discord does not specifically tell us about the updates, but merely tells us the * {@link net.dv8tion.jda.api.entities.ScheduledEvent ScheduledEvent} was updated and gives us the updated {@link net.dv8tion.jda.api.entities.ScheduledEvent ScheduledEvent} object. diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GenericGuildVoiceEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GenericGuildVoiceEvent.java index 18f010d201..ccfe204d66 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GenericGuildVoiceEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GenericGuildVoiceEvent.java @@ -19,7 +19,12 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.GuildVoiceState; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.events.guild.GenericGuildEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -41,6 +46,9 @@ * member was updated and gives us the updated member object. In order to fire specific events like these we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public abstract class GenericGuildVoiceEvent extends GenericGuildEvent { protected final Member member; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceDeafenEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceDeafenEvent.java index ac934a5969..efe896e80e 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceDeafenEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceDeafenEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -40,6 +45,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceDeafenEvent extends GenericGuildVoiceEvent { protected final boolean deafened; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildDeafenEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildDeafenEvent.java index 41ee86ddaa..d03f59607b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildDeafenEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildDeafenEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,6 +43,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceGuildDeafenEvent extends GenericGuildVoiceEvent { protected final boolean guildDeafened; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildMuteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildMuteEvent.java index 96bf9996e1..1acb2faec8 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildMuteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceGuildMuteEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,6 +43,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceGuildMuteEvent extends GenericGuildVoiceEvent { protected final boolean guildMuted; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceMuteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceMuteEvent.java index 6bbddc7caa..d61002ff4e 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceMuteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceMuteEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -40,6 +45,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceMuteEvent extends GenericGuildVoiceEvent { protected final boolean muted; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceRequestToSpeakEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceRequestToSpeakEvent.java index 0a9b8c2f48..7722aceb32 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceRequestToSpeakEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceRequestToSpeakEvent.java @@ -20,7 +20,12 @@ import net.dv8tion.jda.api.entities.GuildVoiceState; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.channel.concrete.StageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.requests.RestAction; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.CheckReturnValue; import javax.annotation.Nonnull; @@ -45,6 +50,9 @@ * member was updated and gives us the updated member object. In order to fire specific events like these we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceRequestToSpeakEvent extends GenericGuildVoiceEvent { private final OffsetDateTime oldTime, newTime; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfDeafenEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfDeafenEvent.java index b50e3e3423..c8fac23bf8 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfDeafenEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfDeafenEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,6 +43,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceSelfDeafenEvent extends GenericGuildVoiceEvent { protected final boolean selfDeafened; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfMuteEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfMuteEvent.java index ea85041d53..4f92f17222 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfMuteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSelfMuteEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,6 +43,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceSelfMuteEvent extends GenericGuildVoiceEvent { protected final boolean selfMuted; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceStreamEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceStreamEvent.java index da52a27f6e..86577c4c56 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceStreamEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceStreamEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -38,6 +43,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceStreamEvent extends GenericGuildVoiceEvent { private final boolean stream; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSuppressEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSuppressEvent.java index aafd1151a0..49f9fa68fb 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSuppressEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceSuppressEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -40,6 +45,9 @@ * * @see net.dv8tion.jda.api.entities.GuildVoiceState#isSuppressed() GuildVoiceState.isSuppressed() */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceSuppressEvent extends GenericGuildVoiceEvent { protected final boolean suppressed; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceUpdateEvent.java index 0bf331af08..861e8b5878 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceUpdateEvent.java @@ -21,6 +21,11 @@ import net.dv8tion.jda.api.entities.channel.middleman.AudioChannel; import net.dv8tion.jda.api.entities.channel.unions.AudioChannelUnion; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -59,6 +64,9 @@ * *

Identifier: {@code audio-channel} */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceUpdateEvent extends GenericGuildVoiceEvent implements UpdateEvent { public static final String IDENTIFIER = "audio-channel"; diff --git a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceVideoEvent.java b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceVideoEvent.java index 9ee3d9a472..aed505d4ed 100644 --- a/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceVideoEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/guild/voice/GuildVoiceVideoEvent.java @@ -18,6 +18,11 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -39,6 +44,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_VOICE_STATES) +@RequiredCacheFlags(always = CacheFlag.VOICE_STATE) +@RequiresCachedMember public class GuildVoiceVideoEvent extends GenericGuildVoiceEvent { private final boolean video; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/GenericMessageEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/GenericMessageEvent.java index b8c603c014..37c3ced068 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/GenericMessageEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/GenericMessageEvent.java @@ -25,6 +25,8 @@ import net.dv8tion.jda.api.entities.channel.unions.GuildMessageChannelUnion; import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.internal.utils.Helpers; import javax.annotation.Nonnull; @@ -43,6 +45,7 @@ *

  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGES DIRECT_MESSAGES} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES}) public abstract class GenericMessageEvent extends Event { protected final long messageId; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/MessageBulkDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/MessageBulkDeleteEvent.java index 14b6baf54c..0b66b93469 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/MessageBulkDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/MessageBulkDeleteEvent.java @@ -20,6 +20,8 @@ import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel; import net.dv8tion.jda.api.entities.channel.unions.GuildMessageChannelUnion; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import java.util.Collections; @@ -39,6 +41,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGES DIRECT_MESSAGES} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES}) public class MessageBulkDeleteEvent extends Event { protected final GuildMessageChannel channel; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/MessageDeleteEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/MessageDeleteEvent.java index ec7524ab6b..e2a40eb987 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/MessageDeleteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/MessageDeleteEvent.java @@ -17,6 +17,8 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -36,6 +38,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGES DIRECT_MESSAGES} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES}) public class MessageDeleteEvent extends GenericMessageEvent { public MessageDeleteEvent(@Nonnull JDA api, long responseNumber, long messageId, @Nonnull MessageChannel channel) diff --git a/src/main/java/net/dv8tion/jda/api/events/message/MessageReceivedEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/MessageReceivedEvent.java index 1407ac0555..8ab960a803 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/MessageReceivedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/MessageReceivedEvent.java @@ -22,6 +22,8 @@ import net.dv8tion.jda.api.entities.Webhook; import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -41,6 +43,7 @@ * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES}) public class MessageReceivedEvent extends GenericMessageEvent { private final Message message; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/MessageUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/MessageUpdateEvent.java index 9db91ddab0..a05b636714 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/MessageUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/MessageUpdateEvent.java @@ -19,6 +19,8 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -40,6 +42,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGES DIRECT_MESSAGES} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGES, GatewayIntent.DIRECT_MESSAGES}) public class MessageUpdateEvent extends GenericMessageEvent { private final Message message; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/poll/GenericMessagePollVoteEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/poll/GenericMessagePollVoteEvent.java index f8ada658eb..437513de89 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/poll/GenericMessagePollVoteEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/poll/GenericMessagePollVoteEvent.java @@ -20,7 +20,9 @@ import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.message.GenericMessageEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.requests.RestAction; import javax.annotation.CheckReturnValue; @@ -40,6 +42,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_POLLS DIRECT_MESSAGE_POLLS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_POLLS, GatewayIntent.DIRECT_MESSAGE_POLLS}) public class GenericMessagePollVoteEvent extends GenericMessageEvent { protected final long userId; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteAddEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteAddEvent.java index 24fa90eefb..7a57dada79 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteAddEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteAddEvent.java @@ -17,6 +17,8 @@ package net.dv8tion.jda.api.events.message.poll; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -34,6 +36,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_POLLS DIRECT_MESSAGE_POLLS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_POLLS, GatewayIntent.DIRECT_MESSAGE_POLLS}) public class MessagePollVoteAddEvent extends GenericMessagePollVoteEvent { public MessagePollVoteAddEvent(@Nonnull MessageChannel channel, long responseNumber, long messageId, long userId, long answerId) diff --git a/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteRemoveEvent.java index 5c261f88fe..c4a1382682 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/poll/MessagePollVoteRemoveEvent.java @@ -17,6 +17,8 @@ package net.dv8tion.jda.api.events.message.poll; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -34,6 +36,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_POLLS DIRECT_MESSAGE_POLLS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_POLLS, GatewayIntent.DIRECT_MESSAGE_POLLS}) public class MessagePollVoteRemoveEvent extends GenericMessagePollVoteEvent { public MessagePollVoteRemoveEvent(@Nonnull MessageChannel channel, long responseNumber, long messageId, long userId, long answerId) diff --git a/src/main/java/net/dv8tion/jda/api/events/message/react/GenericMessageReactionEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/react/GenericMessageReactionEvent.java index 5820a8ee87..394100e573 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/react/GenericMessageReactionEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/react/GenericMessageReactionEvent.java @@ -24,7 +24,9 @@ import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.entities.emoji.EmojiUnion; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.message.GenericMessageEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.internal.requests.CompletedRestAction; @@ -46,6 +48,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_REACTIONS DIRECT_MESSAGE_REACTIONS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.DIRECT_MESSAGE_REACTIONS}) public class GenericMessageReactionEvent extends GenericMessageEvent { protected final long userId; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionAddEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionAddEvent.java index db2515f76b..fc356c73e8 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionAddEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionAddEvent.java @@ -20,6 +20,8 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageReaction; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -38,6 +40,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_REACTIONS DIRECT_MESSAGE_REACTIONS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.DIRECT_MESSAGE_REACTIONS}) public class MessageReactionAddEvent extends GenericMessageReactionEvent { private final long messageAuthorId; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveAllEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveAllEvent.java index 9837cfbefb..e420040270 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveAllEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveAllEvent.java @@ -18,7 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.message.GenericMessageEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -35,6 +37,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_REACTIONS DIRECT_MESSAGE_REACTIONS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.DIRECT_MESSAGE_REACTIONS}) public class MessageReactionRemoveAllEvent extends GenericMessageEvent { public MessageReactionRemoveAllEvent(@Nonnull JDA api, long responseNumber, long messageId, @Nonnull MessageChannel channel) diff --git a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEmojiEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEmojiEvent.java index e69e90cd09..ef31d7e195 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEmojiEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEmojiEvent.java @@ -21,7 +21,9 @@ import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.entities.emoji.Emoji; import net.dv8tion.jda.api.entities.emoji.EmojiUnion; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.message.GenericMessageEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -38,6 +40,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_REACTIONS DIRECT_MESSAGE_REACTIONS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.DIRECT_MESSAGE_REACTIONS}) public class MessageReactionRemoveEmojiEvent extends GenericMessageEvent { private final MessageReaction reaction; diff --git a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEvent.java b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEvent.java index 09286042a2..b3bf45047e 100644 --- a/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/message/react/MessageReactionRemoveEvent.java @@ -20,6 +20,8 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.MessageReaction; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -37,6 +39,7 @@ *
  • {@link net.dv8tion.jda.api.requests.GatewayIntent#DIRECT_MESSAGE_REACTIONS DIRECT_MESSAGE_REACTIONS} to work in private channels
  • * */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_REACTIONS, GatewayIntent.DIRECT_MESSAGE_REACTIONS}) public class MessageReactionRemoveEvent extends GenericMessageReactionEvent { public MessageReactionRemoveEvent(@Nonnull JDA api, long responseNumber, @Nullable User user, diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/GenericGuildStickerEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/GenericGuildStickerEvent.java index 4d2c9b68b3..58b6e32eb5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/GenericGuildStickerEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/GenericGuildStickerEvent.java @@ -20,6 +20,10 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; import net.dv8tion.jda.api.events.Event; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -33,6 +37,8 @@ * *
    {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public abstract class GenericGuildStickerEvent extends Event { protected final Guild guild; diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerAddedEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerAddedEvent.java index 0678d3a499..a48ec39632 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerAddedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerAddedEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -32,6 +36,8 @@ * *
    {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerAddedEvent extends GenericGuildStickerEvent { public GuildStickerAddedEvent(@Nonnull JDA api, long responseNumber, diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerRemovedEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerRemovedEvent.java index c07b2260cf..acb178c2a5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerRemovedEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/GuildStickerRemovedEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -32,6 +36,8 @@ * *
    {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerRemovedEvent extends GenericGuildStickerEvent { public GuildStickerRemovedEvent(@Nonnull JDA api, long responseNumber, diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GenericGuildStickerUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GenericGuildStickerUpdateEvent.java index 0f638f0160..e371e98519 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GenericGuildStickerUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GenericGuildStickerUpdateEvent.java @@ -20,7 +20,11 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.sticker.GenericGuildStickerEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -35,6 +39,8 @@ * *
    {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disables that CacheFlag by default! */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public abstract class GenericGuildStickerUpdateEvent extends GenericGuildStickerEvent implements UpdateEvent { protected final String identifier; diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateAvailableEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateAvailableEvent.java index 71703c70c3..046b6b6144 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateAvailableEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateAvailableEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -34,6 +38,8 @@ * *

    Identifier: {@code available} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerUpdateAvailableEvent extends GenericGuildStickerUpdateEvent { public static final String IDENTIFIER = "available"; diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateDescriptionEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateDescriptionEvent.java index 541ba85eb6..cbf8a3f419 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateDescriptionEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateDescriptionEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -36,6 +40,8 @@ * *

    Identifier: {@code description} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerUpdateDescriptionEvent extends GenericGuildStickerUpdateEvent { public static final String IDENTIFIER = "description"; diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateNameEvent.java index 91d9b69ead..da57a43eb9 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateNameEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -36,6 +40,8 @@ * *

    Identifier: {@code name} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerUpdateNameEvent extends GenericGuildStickerUpdateEvent { public static final String IDENTIFIER = "name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateTagsEvent.java b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateTagsEvent.java index 6acd8ee86d..0fe42d98a2 100644 --- a/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateTagsEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/sticker/update/GuildStickerUpdateTagsEvent.java @@ -19,6 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.sticker.GuildSticker; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.Set; @@ -37,6 +41,8 @@ * *

    Identifier: {@code tags} */ +@RequiredIntents(always = GatewayIntent.GUILD_EXPRESSIONS) +@RequiredCacheFlags(always = CacheFlag.STICKER) public class GuildStickerUpdateTagsEvent extends GenericGuildStickerUpdateEvent> { public static final String IDENTIFIER = "tags"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/UserActivityEndEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/UserActivityEndEvent.java index 5adfc2d747..40f7a418ee 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/UserActivityEndEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/UserActivityEndEvent.java @@ -20,7 +20,11 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.events.user.update.GenericUserPresenceEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -55,6 +59,9 @@ *

    This also requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#ACTIVITY CacheFlag.ACTIVITY} to be enabled. * You can enable the cache flag with {@link net.dv8tion.jda.api.JDABuilder#enableCache(CacheFlag, CacheFlag...) enableCache(CacheFlag.ACTIVITY)}. */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(always = CacheFlag.ACTIVITY) +@RequiresCachedMember public class UserActivityEndEvent extends GenericUserEvent implements GenericUserPresenceEvent { private final Activity oldActivity; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/UserActivityStartEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/UserActivityStartEvent.java index 1fd505bfa3..7e0895bf77 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/UserActivityStartEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/UserActivityStartEvent.java @@ -20,7 +20,11 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.events.user.update.GenericUserPresenceEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -50,6 +54,9 @@ *

    This also requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#ACTIVITY CacheFlag.ACTIVITY} to be enabled. * You can enable the cache flag with {@link net.dv8tion.jda.api.JDABuilder#enableCache(CacheFlag, CacheFlag...) enableCache(CacheFlag.ACTIVITY)}. */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(always = CacheFlag.ACTIVITY) +@RequiresCachedMember public class UserActivityStartEvent extends GenericUserEvent implements GenericUserPresenceEvent { private final Activity newActivity; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/UserTypingEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/UserTypingEvent.java index f267dec6fc..20af9fc389 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/UserTypingEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/UserTypingEvent.java @@ -22,6 +22,8 @@ import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -39,6 +41,7 @@ * *

    Can be used to retrieve the User who started typing and when and in which MessageChannel they started typing. */ +@RequiredIntents(sometimes = {GatewayIntent.GUILD_MESSAGE_TYPING, GatewayIntent.DIRECT_MESSAGE_TYPING}) public class UserTypingEvent extends GenericUserEvent { private final Member member; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserPresenceEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserPresenceEvent.java index 9a38e90e84..7e682b7de1 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserPresenceEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserPresenceEvent.java @@ -19,6 +19,11 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.events.GenericEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -39,7 +44,14 @@ * to cache the updated members. Discord does not specifically tell us about the updates, but merely tells us the * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. + * + *

    Subtypes of this event needs either {@link net.dv8tion.jda.api.utils.cache.CacheFlag#ACTIVITY CacheFlag.ACTIVITY} + * or {@link net.dv8tion.jda.api.utils.cache.CacheFlag#ONLINE_STATUS CacheFlag.ONLINE_STATUS} to be enabled, depending on the type. + * You can enable the cache flag with {@link net.dv8tion.jda.api.JDABuilder#enableCache(CacheFlag, CacheFlag...) enableCache(CacheFlag.ACTIVITY, CacheFlag.ONLINE_STATUS)}. */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(sometimes = {CacheFlag.ACTIVITY, CacheFlag.ONLINE_STATUS}) +@RequiresCachedMember public interface GenericUserPresenceEvent extends GenericEvent { /** diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserUpdateEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserUpdateEvent.java index bf904760eb..17b67a3ade 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserUpdateEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/GenericUserUpdateEvent.java @@ -19,7 +19,10 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.events.UpdateEvent; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.events.user.GenericUserEvent; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -42,6 +45,8 @@ * @param * The type of the updated value */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public abstract class GenericUserUpdateEvent extends GenericUserEvent implements UpdateEvent { protected final T previous; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivitiesEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivitiesEvent.java index c54e13d751..87bad01512 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivitiesEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivitiesEvent.java @@ -20,6 +20,10 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; @@ -50,6 +54,9 @@ * * @since 4.2.1 */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(always = CacheFlag.ACTIVITY) +@RequiresCachedMember public class UserUpdateActivitiesEvent extends GenericUserUpdateEvent> implements GenericUserPresenceEvent { public static final String IDENTIFIER = "activities"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivityOrderEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivityOrderEvent.java index 98b6369afd..e6426022fd 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivityOrderEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateActivityOrderEvent.java @@ -20,6 +20,11 @@ import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.cache.CacheFlag; import javax.annotation.Nonnull; import java.util.List; @@ -41,7 +46,13 @@ * to cache the updated members. Discord does not specifically tell us about the updates, but merely tells us the * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. + * + *

    This also requires {@link net.dv8tion.jda.api.utils.cache.CacheFlag#ACTIVITY CacheFlag.ACTIVITY} to be enabled. + * You can enable the cache flag with {@link net.dv8tion.jda.api.JDABuilder#enableCache(CacheFlag, CacheFlag...) enableCache(CacheFlag.ACTIVITY)}. */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(always = CacheFlag.ACTIVITY) +@RequiresCachedMember public class UserUpdateActivityOrderEvent extends GenericUserUpdateEvent> implements GenericUserPresenceEvent { public static final String IDENTIFIER = "activity_order"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateAvatarEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateAvatarEvent.java index 3cf958a135..39e92aa35b 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateAvatarEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateAvatarEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.ImageProxy; import javax.annotation.Nonnull; @@ -41,6 +44,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class UserUpdateAvatarEvent extends GenericUserUpdateEvent { public static final String IDENTIFIER = "avatar"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateDiscriminatorEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateDiscriminatorEvent.java index 7f41a8f7c6..19b09bb7e4 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateDiscriminatorEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateDiscriminatorEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class UserUpdateDiscriminatorEvent extends GenericUserUpdateEvent { public static final String IDENTIFIER = "discriminator"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateFlagsEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateFlagsEvent.java index a9b8821cda..a91ef474e5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateFlagsEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateFlagsEvent.java @@ -17,6 +17,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; import java.util.EnumSet; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class UserUpdateFlagsEvent extends GenericUserUpdateEvent> { public static final String IDENTIFIER = "public_flags"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateGlobalNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateGlobalNameEvent.java index f38bc9e16f..15c1a4eec5 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateGlobalNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateGlobalNameEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nullable; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class UserUpdateGlobalNameEvent extends GenericUserUpdateEvent { public static final String IDENTIFIER = "global_name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateNameEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateNameEvent.java index 2bb604f41b..e66b81f0cd 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateNameEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateNameEvent.java @@ -18,6 +18,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; +import net.dv8tion.jda.api.requests.GatewayIntent; import javax.annotation.Nonnull; @@ -39,6 +42,8 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_MEMBERS) +@RequiresCachedMember public class UserUpdateNameEvent extends GenericUserUpdateEvent { public static final String IDENTIFIER = "name"; diff --git a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateOnlineStatusEvent.java b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateOnlineStatusEvent.java index 72da133f05..97b9e06c3a 100644 --- a/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateOnlineStatusEvent.java +++ b/src/main/java/net/dv8tion/jda/api/events/user/update/UserUpdateOnlineStatusEvent.java @@ -22,6 +22,9 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; +import net.dv8tion.jda.api.events.annotations.RequiresCachedMember; import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.MemberCachePolicy; import net.dv8tion.jda.api.utils.cache.CacheFlag; @@ -46,6 +49,9 @@ * member was updated and gives us the updated member object. In order to fire a specific event like this we * need to have the old member cached to compare against. */ +@RequiredIntents(always = GatewayIntent.GUILD_PRESENCES) +@RequiredCacheFlags(always = CacheFlag.ONLINE_STATUS) +@RequiresCachedMember public class UserUpdateOnlineStatusEvent extends GenericUserUpdateEvent implements GenericUserPresenceEvent { public static final String IDENTIFIER = "status"; diff --git a/src/main/java/net/dv8tion/jda/api/requests/GatewayIntent.java b/src/main/java/net/dv8tion/jda/api/requests/GatewayIntent.java index 1c60305220..bccd91879c 100644 --- a/src/main/java/net/dv8tion/jda/api/requests/GatewayIntent.java +++ b/src/main/java/net/dv8tion/jda/api/requests/GatewayIntent.java @@ -21,24 +21,8 @@ import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.GenericEvent; -import net.dv8tion.jda.api.events.automod.AutoModExecutionEvent; -import net.dv8tion.jda.api.events.automod.GenericAutoModRuleEvent; -import net.dv8tion.jda.api.events.emoji.GenericEmojiEvent; -import net.dv8tion.jda.api.events.guild.GuildAuditLogEntryCreateEvent; -import net.dv8tion.jda.api.events.guild.GuildBanEvent; -import net.dv8tion.jda.api.events.guild.GuildUnbanEvent; -import net.dv8tion.jda.api.events.guild.invite.GenericGuildInviteEvent; -import net.dv8tion.jda.api.events.guild.member.GenericGuildMemberEvent; -import net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent; -import net.dv8tion.jda.api.events.guild.scheduledevent.update.GenericScheduledEventUpdateEvent; -import net.dv8tion.jda.api.events.guild.voice.GenericGuildVoiceEvent; +import net.dv8tion.jda.api.events.annotations.RequiredIntents; import net.dv8tion.jda.api.events.message.GenericMessageEvent; -import net.dv8tion.jda.api.events.message.MessageBulkDeleteEvent; -import net.dv8tion.jda.api.events.message.react.GenericMessageReactionEvent; -import net.dv8tion.jda.api.events.sticker.GenericGuildStickerEvent; -import net.dv8tion.jda.api.events.user.UserTypingEvent; -import net.dv8tion.jda.api.events.user.update.GenericUserPresenceEvent; -import net.dv8tion.jda.api.events.user.update.GenericUserUpdateEvent; import net.dv8tion.jda.api.utils.cache.CacheFlag; import net.dv8tion.jda.internal.utils.Checks; @@ -405,44 +389,15 @@ public static EnumSet fromEvents(@Nonnull Class fromEvents(@Nonnull Collection> events) { + Checks.noneNull(events, "Events"); EnumSet intents = EnumSet.noneOf(GatewayIntent.class); for (Class event : events) { - Checks.notNull(event, "Event"); - - if (GenericUserPresenceEvent.class.isAssignableFrom(event)) - intents.add(GUILD_PRESENCES); - else if (GenericUserUpdateEvent.class.isAssignableFrom(event) || GenericGuildMemberEvent.class.isAssignableFrom(event) || GuildMemberRemoveEvent.class.isAssignableFrom(event)) - intents.add(GUILD_MEMBERS); - - else if (GuildBanEvent.class.isAssignableFrom(event) || GuildUnbanEvent.class.isAssignableFrom(event) || GuildAuditLogEntryCreateEvent.class.isAssignableFrom(event)) - intents.add(GUILD_MODERATION); - else if (GenericEmojiEvent.class.isAssignableFrom(event) || GenericGuildStickerEvent.class.isAssignableFrom(event)) - intents.add(GUILD_EXPRESSIONS); - else if (GenericScheduledEventUpdateEvent.class.isAssignableFrom(event)) - intents.add(SCHEDULED_EVENTS); - else if (GenericGuildInviteEvent.class.isAssignableFrom(event)) - intents.add(GUILD_INVITES); - else if (GenericGuildVoiceEvent.class.isAssignableFrom(event)) - intents.add(GUILD_VOICE_STATES); - - else if (MessageBulkDeleteEvent.class.isAssignableFrom(event)) - intents.add(GUILD_MESSAGES); - - else if (GenericMessageReactionEvent.class.isAssignableFrom(event)) - Collections.addAll(intents, GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGE_REACTIONS); - - else if (GenericMessageEvent.class.isAssignableFrom(event)) - Collections.addAll(intents, GUILD_MESSAGES, DIRECT_MESSAGES); - - else if (UserTypingEvent.class.isAssignableFrom(event)) - Collections.addAll(intents, GUILD_MESSAGE_TYPING, DIRECT_MESSAGE_TYPING); - - else if (AutoModExecutionEvent.class.isAssignableFrom(event)) - intents.add(AUTO_MODERATION_EXECUTION); - else if (GenericAutoModRuleEvent.class.isAssignableFrom(event)) - intents.add(AUTO_MODERATION_CONFIGURATION); + final RequiredIntents requiredIntents = event.getDeclaredAnnotation(RequiredIntents.class); + if (requiredIntents != null) + Collections.addAll(intents, requiredIntents.always()); } + return intents; } diff --git a/src/main/java/net/dv8tion/jda/api/utils/cache/CacheFlag.java b/src/main/java/net/dv8tion/jda/api/utils/cache/CacheFlag.java index b9121f8da6..76b5e310e9 100644 --- a/src/main/java/net/dv8tion/jda/api/utils/cache/CacheFlag.java +++ b/src/main/java/net/dv8tion/jda/api/utils/cache/CacheFlag.java @@ -21,10 +21,16 @@ import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; +import net.dv8tion.jda.api.events.GenericEvent; +import net.dv8tion.jda.api.events.annotations.RequiredCacheFlags; import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.internal.utils.Checks; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; /** @@ -137,4 +143,48 @@ public static EnumSet getPrivileged() { return EnumSet.copyOf(privileged); } + + /** + * Parse the required cache flags from the provided {@link GenericEvent Event Types}. + * + * @param events + * The event types + * + * @throws IllegalArgumentException + * If provided with null + * + * @return {@link EnumSet} for the required cache flags + */ + @Nonnull + @SafeVarargs + public static EnumSet fromEvents(@Nonnull Class... events) + { + Checks.noneNull(events, "Event"); + return fromEvents(Arrays.asList(events)); + } + + /** + * Parse the required cache flags from the provided {@link GenericEvent Event Types}. + * + * @param events + * The event types + * + * @throws IllegalArgumentException + * If provided with null + * + * @return {@link EnumSet} for the required cache flags + */ + @Nonnull + public static EnumSet fromEvents(@Nonnull Collection> events) + { + Checks.noneNull(events, "Events"); + EnumSet flags = EnumSet.noneOf(CacheFlag.class); + for (Class event : events) + { + final RequiredCacheFlags requiredCacheFlags = event.getDeclaredAnnotation(RequiredCacheFlags.class); + if (requiredCacheFlags != null) + Collections.addAll(flags, requiredCacheFlags.always()); + } + return flags; + } } diff --git a/src/main/java/net/dv8tion/jda/internal/handle/ChannelUpdateHandler.java b/src/main/java/net/dv8tion/jda/internal/handle/ChannelUpdateHandler.java index 685d72a68a..4ffb5bb9a8 100644 --- a/src/main/java/net/dv8tion/jda/internal/handle/ChannelUpdateHandler.java +++ b/src/main/java/net/dv8tion/jda/internal/handle/ChannelUpdateHandler.java @@ -288,7 +288,7 @@ private boolean handlePermissionOverride(PermissionOverride currentOverride, Dat { if (type != 1) { - EntityBuilder.LOG.debug("Ignoring unknown invite of type '{}'. JSON: {}", type, override); + EntityBuilder.LOG.debug("Ignoring unknown permission override of type '{}'. JSON: {}", type, override); return false; } else if (!api.isCacheFlagSet(CacheFlag.MEMBER_OVERRIDES) && overrideId != api.getSelfUser().getIdLong())