Interface Interaction
-
- All Superinterfaces:
ISnowflake
- All Known Subinterfaces:
ButtonInteraction,CommandAutoCompleteInteraction,CommandInteraction,CommandInteractionPayload,ComponentInteraction,ContextInteraction<T>,IAutoCompleteCallback,IDeferrableCallback,IMessageEditCallback,IReplyCallback,MessageContextInteraction,SelectMenuInteraction,SlashCommandInteraction,UserContextInteraction
- All Known Implementing Classes:
ButtonInteractionEvent,CommandAutoCompleteInteractionEvent,GenericAutoCompleteInteractionEvent,GenericCommandInteractionEvent,GenericComponentInteractionCreateEvent,GenericContextInteractionEvent,GenericInteractionCreateEvent,MessageContextInteractionEvent,SelectMenuInteractionEvent,SlashCommandInteractionEvent,UserContextInteractionEvent
public interface Interaction extends ISnowflake
Abstract representation for any kind of Discord interaction.
This includes things such asSlash-CommandsorButtons.To properly handle an interaction you must acknowledge it. Each interaction has different callbacks which acknowledge the interaction. These are added by the individual
I...Callbackinterfaces:IReplyCallback
Which supports direct message replies and deferred message replies viaIReplyCallback.reply(String)andIReplyCallback.deferReply()IMessageEditCallback
Which supports direct message edits and deferred message edits (or no-operation) viaIMessageEditCallback.editMessage(String)andIMessageEditCallback.deferEdit()IAutoCompleteCallback
Which supports choice suggestions for auto-complete interactions viaIAutoCompleteCallback.replyChoices(Command.Choice...)
Once the interaction is acknowledged, you can not reply with these methods again. If the interaction is a
deferrable, you can useIDeferrableCallback.getHook()to send additional messages or update the original reply. When usingIReplyCallback.deferReply()the first message sent to theInteractionHookwill be identical to usingInteractionHook.editOriginal(String). You must decide whether your reply will be ephemeral or not before callingIReplyCallback.deferReply(). So design your code flow with that in mind!You can only acknowledge an interaction once! Any additional calls to reply/deferReply will result in exceptions. You can use
isAcknowledged()to check whether the interaction has been acknowledged already.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description ChannelgetChannel()The channel this interaction happened in.default ChannelTypegetChannelType()TheChannelTypefor the channel this interaction came from.GuildgetGuild()TheGuildthis interaction happened in.default GuildChannelgetGuildChannel()TheGuildChannelthis interaction happened in.default LocalegetGuildLocale()Returns the preferred language of the Guild.JDAgetJDA()Returns theJDAinstance of this interactionMembergetMember()TheMemberwho caused this interaction.default MessageChannelgetMessageChannel()TheMessageChannelthis interaction happened in.default NewsChannelgetNewsChannel()TheNewsChannelthis interaction happened in.default PrivateChannelgetPrivateChannel()ThePrivateChannelthis interaction happened in.default TextChannelgetTextChannel()TheTextChannelthis interaction happened in.default ThreadChannelgetThreadChannel()TheThreadChannelthis interaction happened in.StringgetToken()The interaction token used for responding to an interaction.default InteractionTypegetType()TheInteractionTypefor this interaction.intgetTypeRaw()The raw interaction type.UsergetUser()TheUserwho caused this interaction.LocalegetUserLocale()Returns the selected language of the invoking user.default VoiceChannelgetVoiceChannel()TheVoiceChannelthis interaction happened in.booleanisAcknowledged()Whether this interaction has already been acknowledged.default booleanisFromGuild()Whether this interaction came from aGuild.-
Methods inherited from interface net.dv8tion.jda.api.entities.ISnowflake
getId, getIdLong, getTimeCreated
-
-
-
-
Method Detail
-
getTypeRaw
int getTypeRaw()
The raw interaction type.
It is recommended to usegetType()instead.- Returns:
- The raw interaction type
-
getType
@Nonnull default InteractionType getType()
TheInteractionTypefor this interaction.- Returns:
- The
InteractionTypeorInteractionType.UNKNOWN
-
getToken
@Nonnull String getToken()
The interaction token used for responding to an interaction.- Returns:
- The interaction token
-
getGuild
@Nullable Guild getGuild()
TheGuildthis interaction happened in.
This is null in direct messages.- Returns:
- The
Guildor null
-
isFromGuild
default boolean isFromGuild()
- Returns:
- True, if this interaction happened in a guild
-
getChannelType
@Nonnull default ChannelType getChannelType()
TheChannelTypefor the channel this interaction came from.
IfgetChannel()is null, this returnsChannelType.UNKNOWN.- Returns:
- The
ChannelType
-
getMember
@Nullable Member getMember()
TheMemberwho caused this interaction.
This is null if the interaction is not from a guild.- Returns:
- The
Member
-
getChannel
@Nullable Channel getChannel()
The channel this interaction happened in.
This is currently never null, but might be nullable in the future.- Returns:
- The channel or null if this interaction is not from a channel context
-
isAcknowledged
boolean isAcknowledged()
Whether this interaction has already been acknowledged.
Each interaction can only be acknowledged once.- Returns:
- True, if this interaction has already been acknowledged
-
getGuildChannel
@Nonnull default GuildChannel getGuildChannel()
TheGuildChannelthis interaction happened in.
IfgetChannelType()is not a guild type, this throwsIllegalStateException!- Returns:
- The
GuildChannel - Throws:
IllegalStateException- IfgetChannel()is not a guild channel
-
getMessageChannel
@Nonnull default MessageChannel getMessageChannel()
TheMessageChannelthis interaction happened in.
IfgetChannelType()is not a message channel type, this throwsIllegalStateException!- Returns:
- The
MessageChannel - Throws:
IllegalStateException- IfgetChannel()is not a message channel
-
getTextChannel
@Nonnull default TextChannel getTextChannel()
TheTextChannelthis interaction happened in.
IfgetChannelType()is notChannelType.TEXT, this throwsIllegalStateException!- Returns:
- The
TextChannel - Throws:
IllegalStateException- IfgetChannel()is not a text channel
-
getNewsChannel
@Nonnull default NewsChannel getNewsChannel()
TheNewsChannelthis interaction happened in.
IfgetChannelType()is notChannelType.NEWS, this throwsIllegalStateException!- Returns:
- The
NewsChannel - Throws:
IllegalStateException- IfgetChannel()is not a news channel
-
getVoiceChannel
@Nonnull default VoiceChannel getVoiceChannel()
TheVoiceChannelthis interaction happened in.
IfgetChannelType()is notChannelType.VOICE, this throwsIllegalStateException!- Returns:
- The
VoiceChannel - Throws:
IllegalStateException- IfgetChannel()is not a voice channel
-
getPrivateChannel
@Nonnull default PrivateChannel getPrivateChannel()
ThePrivateChannelthis interaction happened in.
IfgetChannelType()is notChannelType.PRIVATE, this throwsIllegalStateException!- Returns:
- The
PrivateChannel - Throws:
IllegalStateException- IfgetChannel()is not a private channel
-
getThreadChannel
@Nonnull default ThreadChannel getThreadChannel()
TheThreadChannelthis interaction happened in.
IfgetChannelType()is notChannelType.isThread(), this throwsIllegalStateException!- Returns:
- The
ThreadChannel - Throws:
IllegalStateException- IfgetChannel()is not a thread channel
-
getUserLocale
@Nonnull Locale getUserLocale()
Returns the selected language of the invoking user.- Returns:
- The language of the invoking user
-
getGuildLocale
@Nonnull default Locale getGuildLocale()
Returns the preferred language of the Guild.
This is identical togetGuild().getLocale().- Returns:
- The preferred language of the Guild
- Throws:
IllegalStateException- If this interaction is not from a guild. (SeeisFromGuild())
-
-