public interface Message extends ISnowflake
MessageChannels
.Modifier and Type | Interface and Description |
---|---|
static class |
Message.Attachment
Represents a
Message file attachment. |
Modifier and Type | Method and Description |
---|---|
RestAction<java.lang.Void> |
addReaction(Emote emote)
Adds a reaction to this Message using an
Emote . |
RestAction<java.lang.Void> |
addReaction(java.lang.String unicode)
Adds a reaction to this Message using a UTF8 emoji.
|
RestAction<java.lang.Void> |
clearReactions()
Removes all reactions from this Message.
|
RestAction<java.lang.Void> |
delete()
Deletes this Message from Discord.
|
RestAction<java.lang.Void> |
deleteMessage()
Deprecated.
Use
delete() instead. |
RestAction<Message> |
editMessage(Message newContent)
Edits this Message's content to the provided
Message . |
RestAction<Message> |
editMessage(MessageEmbed newContent)
Edits this Message's content to the provided
MessageEmbed . |
RestAction<Message> |
editMessage(java.lang.String newContent)
Edits this Message's content to the provided String.
|
java.util.List<Message.Attachment> |
getAttachments()
An unmodifiable list of
Attachments that are attached to this message. |
User |
getAuthor()
The author of this Message
|
MessageChannel |
getChannel()
Returns the
MessageChannel that this message was sent in. |
ChannelType |
getChannelType()
Gets the
ChannelType that this message was received from. |
java.lang.String |
getContent()
The textual content of this message in the format that would be shown to the Discord client.
|
java.time.OffsetDateTime |
getEditedTime()
Provides the
OffsetDateTime defining when this Message was last
edited. |
java.util.List<MessageEmbed> |
getEmbeds()
An unmodifiable list of
MessageEmbeds that are part of this
Message. |
java.util.List<Emote> |
getEmotes()
All
Emotes used in this Message. |
Group |
getGroup()
Returns the
Group that this message was sent in. |
Guild |
getGuild()
Returns the
Guild that this message was sent in. |
JDA |
getJDA()
Returns the
JDA instance related to this Message. |
java.util.List<TextChannel> |
getMentionedChannels()
A immutable list of all mentioned
TextChannels . |
java.util.List<Role> |
getMentionedRoles()
A immutable list of all mentioned
Roles . |
java.util.List<User> |
getMentionedUsers()
A immutable list of all mentioned users.
|
PrivateChannel |
getPrivateChannel()
Returns the
PrivateChannel that this message was sent in. |
java.lang.String |
getRawContent()
The raw textual content of this message.
|
java.util.List<MessageReaction> |
getReactions()
All
MessageReactions that are on this Message. |
java.lang.String |
getStrippedContent()
Gets the textual content of this message using
getContent() and then strips it of all markdown characters
like *, **, __, ~~ that provide text formatting. |
TextChannel |
getTextChannel()
Returns the
TextChannel that this message was sent in. |
MessageType |
getType()
This specifies the
MessageType of this Message. |
boolean |
isEdited()
Returns whether or not this Message has been edited before.
|
boolean |
isFromType(ChannelType type)
Used to determine if this Message was received from a
MessageChannel
of the ChannelType specified. |
boolean |
isMentioned(User user)
Checks if given user was mentioned in this message in any way (@User, @everyone, @here).
|
boolean |
isPinned()
Whether or not this Message has been pinned in its parent channel.
|
boolean |
isTTS()
Defines whether or not this Message triggers TTS (Text-To-Speech).
|
boolean |
isWebhookMessage()
|
boolean |
mentionsEveryone()
Indicates if this Message mentions everyone using @everyone or @here.
|
RestAction<java.lang.Void> |
pin()
Used to add the Message to the
MessageChannel's pinned message list. |
RestAction<java.lang.Void> |
unpin()
Used to remove the Message from the
MessageChannel's pinned message list. |
getCreationTime, getId
java.util.List<User> getMentionedUsers()
PrivateChannel's
, this always returns an empty Listboolean isMentioned(User user)
user
- The user to check on.java.util.List<TextChannel> getMentionedChannels()
TextChannels
. If none were mentioned, this list is empty.
PrivateChannels
and Groups
,
this always returns an empty List.java.util.List<Role> getMentionedRoles()
Roles
. If none were mentioned, this list is empty.
PrivateChannels
and Groups
,
this always returns an empty List.boolean mentionsEveryone()
PrivateChannel's
, this always returns false.boolean isEdited()
java.time.OffsetDateTime getEditedTime()
OffsetDateTime
defining when this Message was last
edited. If this Message has not been edited (isEdited()
is false
), then this method
will return null
.null
if the Message has never been edited.User getAuthor()
java.lang.String getContent()
IMentionable
entities will be resolved to the format
shown by the Discord client instead of the <id> format.
This includes resolving:
Users
/ Members
to their @Username/@Nickname format,
TextChannels
to their #ChannelName format,
Roles
to their @RoleName format
Emotes
(not emojis!) to their :name:
format.
If you want the actual Content (mentions as <@id>), use getRawContent()
instead
java.lang.String getRawContent()
IMentionable
entities like getContent()
does. This means that this is the completely raw textual content of the message
received from Discord and can contain mentions specified by
Discord's Message Formatting.java.lang.String getStrippedContent()
getContent()
and then strips it of all markdown characters
like *, **, __, ~~ that provide text formatting. Any characters that match these but are not being used
for formatting are escaped to prevent possible formatting.getContent()
with all text formatting characters removed or escaped.boolean isFromType(ChannelType type)
MessageChannel
of the ChannelType
specified.
ChannelType.VOICE
as Messages can't be sent to
VoiceChannels
.
Useful for restricting functionality to a certain type of channels.
type
- The ChannelType
to check against.ChannelType
which this message was received
from is the same as the one specified by type
.ChannelType getChannelType()
ChannelType
that this message was received from.
ChannelType.VOICE
as Messages can't be sent to
VoiceChannels
.boolean isWebhookMessage()
Webhook
instead of a
User
.
Webhook
.MessageChannel getChannel()
MessageChannel
that this message was sent in.PrivateChannel getPrivateChannel()
PrivateChannel
that this message was sent in.
null
if it was not sent from a PrivateChannel.
isFromType(ChannelType)
or getChannelType()
.
Use getChannel()
for an ambiguous MessageChannel
if you do not need functionality specific to PrivateChannel
.
null
if it was not sent from a PrivateChannel.Group getGroup()
Group
that this message was sent in.
null
if it was not sent from a Group.
isFromType(ChannelType)
or getChannelType()
.
Use getChannel()
for an ambiguous MessageChannel
if you do not need functionality specific to Group
.
null
if it was not sent from a Group.TextChannel getTextChannel()
TextChannel
that this message was sent in.
null
if it was not sent from a TextChannel.
isFromType(ChannelType)
or getChannelType()
.
Use getChannel()
for an ambiguous MessageChannel
if you do not need functionality specific to TextChannel
.
null
if it was not sent from a TextChannel.Guild getGuild()
Guild
that this message was sent in.
getTextChannel()
.getGuild()
.
null
if it was not sent from a TextChannel.
isFromType(ChannelType)
or getChannelType()
.null
if it was not sent from a TextChannel.java.util.List<Message.Attachment> getAttachments()
Attachments
that are attached to this message.
Attachment
at most.Attachments
.java.util.List<MessageEmbed> getEmbeds()
MessageEmbeds
that are part of this
Message.java.util.List<Emote> getEmotes()
Emotes
used in this Message.
Guild.getEmotes()
. These are not the same
as the UTF8 emojis that Discord also supports.
This may or may not contain fake Emotes which means they can be displayed but not used by the logged in account.
To check whether an Emote is fake you can test if IFakeable.isFake()
returns true.
java.util.List<MessageReaction> getReactions()
MessageReactions
that are on this Message.boolean isTTS()
RestAction<Message> editMessage(java.lang.String newContent)
The following ErrorResponses
are possible:
MISSING_ACCESS
Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_WRITE
in
the TextChannel
.UNKNOWN_MESSAGE
newContent
- the new content of the MessageRestAction
- Type: Message
Message
with the updated contentjava.lang.IllegalStateException
- If the message attempting to be edited was not created by the currently logged in account, or if
newContent
's length is 0 or greater than 2000.RestAction<Message> editMessage(MessageEmbed newContent)
MessageEmbed
.
The following ErrorResponses
are possible:
MISSING_ACCESS
Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_WRITE
in
the TextChannel
.UNKNOWN_MESSAGE
newContent
- the new content of the MessageRestAction
- Type: Message
Message
with the updated contentjava.lang.IllegalStateException
- If the message attempting to be edited was not created by the currently logged in account, or
if the passed-in embed is null
or not sendable
RestAction<Message> editMessage(Message newContent)
Message
.
The following ErrorResponses
are possible:
MISSING_ACCESS
Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_WRITE
in
the TextChannel
.UNKNOWN_MESSAGE
newContent
- the new content of the MessageRestAction
- Type: Message
Message
with the updated contentjava.lang.IllegalStateException
- sendable
@Deprecated RestAction<java.lang.Void> deleteMessage()
delete()
instead.delete()
instead.RestAction
- Type: Void
RestAction<java.lang.Void> delete()
TextChannel
and the current account has
Permission.MESSAGE_MANAGE
in the channel.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_MANAGE
in
the TextChannel
when deleting another Member's message
or lost Permission.MESSAGE_MANAGE
.UNKNOWN_MESSAGE
The pin was attempted after the Message had been deleted.RestAction
- Type: Void
PermissionException
- If this Message was not sent by the currently logged in account, the Message was sent in a
TextChannel
, and the currently logged in account
does not have Permission.MESSAGE_MANAGE
in
the channel.java.lang.IllegalStateException
- If this Message was not sent by the currently logged in account and it was not sent in a
TextChannel
.JDA getJDA()
JDA
instance related to this Message.boolean isPinned()
RestAction<java.lang.Void> pin()
MessageChannel's
pinned message list.
MessageChannel.pinMessageById(String)
.
The success or failure of this action will not affect the return of isPinned()
.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_MANAGE
in
the TextChannel
.UNKNOWN_MESSAGE
The pin request was attempted after the Message had been deleted.RestAction
- Type: Void
PermissionException
- If this Message is from a TextChannel
and:
Permission.MESSAGE_READ
.
Permission.MESSAGE_MANAGE
.
RestAction<java.lang.Void> unpin()
MessageChannel's
pinned message list.
MessageChannel.unpinMessageById(String)
.
The success or failure of this action will not affect the return of isPinned()
.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_MANAGE
in
the TextChannel
.UNKNOWN_MESSAGE
The unpin request was attempted after the Message had been deleted.RestAction
- Type: Void
PermissionException
- If this Message is from a TextChannel
and:
Permission.MESSAGE_READ
.
Permission.MESSAGE_MANAGE
.
RestAction<java.lang.Void> addReaction(Emote emote)
Emote
.
Reactions are the small emoji/emotes below a message that have a counter beside them showing how many users have reacted with same emoji/emote.
Neither success nor failure of this request will affect this Message's getReactions()
return as Message is immutable.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.
Permission.MESSAGE_HISTORY
MISSING_PERMISSIONS
Permission.MESSAGE_ADD_REACTION
in the TextChannel
when adding the reaction.UNKNOWN_MESSAGE
The reaction request was attempted after the Message had been deleted.emote
- The Emote
to add as a reaction to this Message.RestAction
- Type: Void
PermissionException
- If the MessageChannel this message was sent in was a TextChannel
and the logged in account does not have
java.lang.IllegalArgumentException
- Emote
is null.Emote
is fake Emote.isFake()
.Emote
cannot be used in the current channel.
See Emote.canInteract(User, MessageChannel)
or Emote.canInteract(Member)
for more information.RestAction<java.lang.Void> addReaction(java.lang.String unicode)
Reactions are the small emoji/emotes below a message that have a counter beside them showing how many users have reacted with same emoji/emote.
Neither success nor failure of this request will affect this Message's getReactions()
return as Message is immutable.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.
Permission.MESSAGE_HISTORY
MISSING_PERMISSIONS
Permission.MESSAGE_ADD_REACTION
in the TextChannel
when adding the reaction.UNKNOWN_MESSAGE
The reaction request was attempted after the Message had been deleted.unicode
- The UTF8 emoji to add as a reaction to this Message.RestAction
- Type: Void
PermissionException
- If the MessageChannel this message was sent in was a TextChannel
and the logged in account does not have
Permission.MESSAGE_ADD_REACTION
in the channel.java.lang.IllegalArgumentException
- If the provided unicode emoji is null or empty.RestAction<java.lang.Void> clearReactions()
Neither success nor failure of this request will affect this Message's getReactions()
return as Message is immutable.
The following ErrorResponses
are possible:
MISSING_ACCESS
TextChannel
due to Permission.MESSAGE_READ
being revoked, or the
account lost access to the Guild
or Group
typically due to being kicked or removed.MISSING_PERMISSIONS
Permission.MESSAGE_MANAGE
in the TextChannel
when adding the reaction.UNKNOWN_MESSAGE
The clear-reactions request was attempted after the Message had been deleted.RestAction
- Type: Void
PermissionException
- If the MessageChannel this message was sent in was a TextChannel
and the currently logged in account does not have
Permission.MESSAGE_MANAGE
in the channel.java.lang.IllegalArgumentException
- If the provided unicode emoji is null or empty.MessageType getType()
MessageType
of this Message.
Messages can represent more than just simple text sent by Users, they can also be special messages that inform about events occurs. A few examples are the system message informing that a message has been pinned. Another would be the system message informing that a call has been started or ended in a group.
MessageType
of this message.