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
This includes things such as
Slash-Commands
or Buttons.
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...Callback interfaces:
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 use IDeferrableCallback.getHook() to send additional messages or update the original reply.
When using IReplyCallback.deferReply() the first message sent to the InteractionHook will be identical to using InteractionHook.editOriginal(String).
You must decide whether your reply will be ephemeral or not before calling IReplyCallback.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
Modifier and TypeMethodDescriptionThe channel this interaction happened in.default ChannelTypeTheChannelTypefor the channel this interaction came from.getGuild()TheGuildthis interaction happened in.default GuildChannelTheGuildChannelthis interaction happened in.default LocaleReturns the preferred language of the Guild.getJDA()Returns theJDAinstance of this interactionTheMemberwho caused this interaction.default MessageChannelTheMessageChannelthis interaction happened in.default NewsChannelTheNewsChannelthis interaction happened in.default PrivateChannelThePrivateChannelthis interaction happened in.default TextChannelTheTextChannelthis interaction happened in.default ThreadChannelTheThreadChannelthis interaction happened in.getToken()The interaction token used for responding to an interaction.default InteractionTypegetType()TheInteractionTypefor this interaction.intThe raw interaction type.getUser()TheUserwho caused this interaction.Returns the selected language of the invoking user.default VoiceChannelTheVoiceChannelthis interaction happened in.booleanWhether this interaction has already been acknowledged.default booleanWhether this interaction came from aGuild.Methods inherited from interface net.dv8tion.jda.api.entities.ISnowflake
getId, getIdLong, getTimeCreated
-
Method Details
-
getTypeRaw
int getTypeRaw()The raw interaction type.
It is recommended to usegetType()instead.- Returns:
- The raw interaction type
-
getType
TheInteractionTypefor this interaction.- Returns:
- The
InteractionTypeorInteractionType.UNKNOWN
-
getToken
The interaction token used for responding to an interaction.- Returns:
- The interaction token
-
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
TheChannelTypefor the channel this interaction came from.
IfgetChannel()is null, this returnsChannelType.UNKNOWN.- Returns:
- The
ChannelType
-
getUser
TheUserwho caused this interaction.- Returns:
- The
User
-
getMember
TheMemberwho caused this interaction.
This is null if the interaction is not from a guild.- Returns:
- The
Member
-
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
TheGuildChannelthis interaction happened in.
IfgetChannelType()is not a guild type, this throwsIllegalStateException!- Returns:
- The
GuildChannel - Throws:
IllegalStateException- IfgetChannel()is not a guild channel
-
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
TheTextChannelthis interaction happened in.
IfgetChannelType()is notChannelType.TEXT, this throwsIllegalStateException!- Returns:
- The
TextChannel - Throws:
IllegalStateException- IfgetChannel()is not a text channel
-
getNewsChannel
TheNewsChannelthis interaction happened in.
IfgetChannelType()is notChannelType.NEWS, this throwsIllegalStateException!- Returns:
- The
NewsChannel - Throws:
IllegalStateException- IfgetChannel()is not a news channel
-
getVoiceChannel
TheVoiceChannelthis interaction happened in.
IfgetChannelType()is notChannelType.VOICE, this throwsIllegalStateException!- Returns:
- The
VoiceChannel - Throws:
IllegalStateException- IfgetChannel()is not a voice channel
-
getPrivateChannel
ThePrivateChannelthis interaction happened in.
IfgetChannelType()is notChannelType.PRIVATE, this throwsIllegalStateException!- Returns:
- The
PrivateChannel - Throws:
IllegalStateException- IfgetChannel()is not a private channel
-
getThreadChannel
TheThreadChannelthis interaction happened in.
IfgetChannelType()is notChannelType.isThread(), this throwsIllegalStateException!- Returns:
- The
ThreadChannel - Throws:
IllegalStateException- IfgetChannel()is not a thread channel
-
getUserLocale
Returns the selected language of the invoking user.- Returns:
- The language of the invoking user
-
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())
-
getJDA
Returns theJDAinstance of this interaction- Returns:
- the corresponding JDA instance
-