pub struct CreateMessage { /* private fields */ }
Expand description
A builder to specify the contents of an send message request, primarily meant for use
through ChannelId::send_message
.
There are three situations where different field requirements are present:
- When sending a message without embeds or stickers,
Self::content
is the only required field that is required to be set. - When sending an
Self::embed
, no other field is required. - When sending stickers with
Self::sticker_id
or other sticker methods, no other field is required.
Note that if you only need to send the content of a message, without specifying other fields,
then ChannelId::say
may be a more preferable option.
§Examples
Sending a message with a content of "test"
and applying text-to-speech:
use serenity::builder::{CreateEmbed, CreateMessage};
use serenity::model::id::ChannelId;
let embed = CreateEmbed::new().title("This is an embed").description("With a description");
let builder = CreateMessage::new().content("test").tts(true).embed(embed);
let _ = channel_id.send_message(&http, builder).await;
Implementations§
Source§impl CreateMessage
impl CreateMessage
pub fn new() -> Self
Sourcepub fn content(self, content: impl Into<String>) -> Self
pub fn content(self, content: impl Into<String>) -> Self
Set the content of the message.
Note: Message contents must be under 2000 unicode code points.
Sourcepub fn add_embed(self, embed: CreateEmbed) -> Self
pub fn add_embed(self, embed: CreateEmbed) -> Self
Add an embed for the message.
Note: This will keep all existing embeds. Use Self::embed()
to replace existing
embeds.
Sourcepub fn add_embeds(self, embeds: Vec<CreateEmbed>) -> Self
pub fn add_embeds(self, embeds: Vec<CreateEmbed>) -> Self
Add multiple embeds for the message.
Note: This will keep all existing embeds. Use Self::embeds()
to replace existing
embeds.
Sourcepub fn embed(self, embed: CreateEmbed) -> Self
pub fn embed(self, embed: CreateEmbed) -> Self
Set an embed for the message.
Note: This will replace all existing embeds. Use Self::add_embed()
to keep existing
embeds.
Sourcepub fn embeds(self, embeds: Vec<CreateEmbed>) -> Self
pub fn embeds(self, embeds: Vec<CreateEmbed>) -> Self
Set multiple embeds for the message.
Note: This will replace all existing embeds. Use Self::add_embeds()
to keep existing
embeds.
Sourcepub fn tts(self, tts: bool) -> Self
pub fn tts(self, tts: bool) -> Self
Set whether the message is text-to-speech.
Think carefully before setting this to true
.
Defaults to false
.
Sourcepub fn reactions<R: Into<ReactionType>>(
self,
reactions: impl IntoIterator<Item = R>,
) -> Self
pub fn reactions<R: Into<ReactionType>>( self, reactions: impl IntoIterator<Item = R>, ) -> Self
Adds a list of reactions to create after the message’s sent.
Sourcepub fn add_file(self, file: CreateAttachment) -> Self
pub fn add_file(self, file: CreateAttachment) -> Self
Appends a file to the message.
Note: Requires the Attach Files permission.
Sourcepub fn add_files(
self,
files: impl IntoIterator<Item = CreateAttachment>,
) -> Self
pub fn add_files( self, files: impl IntoIterator<Item = CreateAttachment>, ) -> Self
Appends a list of files to the message.
Note: Requires the Attach Files permission.
Sourcepub fn files(self, files: impl IntoIterator<Item = CreateAttachment>) -> Self
pub fn files(self, files: impl IntoIterator<Item = CreateAttachment>) -> Self
Sets a list of files to include in the message.
Calling this multiple times will overwrite the file list. To append files, call
Self::add_file
or Self::add_files
instead.
Note: Requires the Attach Files permission.
Sourcepub fn allowed_mentions(self, allowed_mentions: CreateAllowedMentions) -> Self
pub fn allowed_mentions(self, allowed_mentions: CreateAllowedMentions) -> Self
Set the allowed mentions for the message.
Sourcepub fn reference_message(self, reference: impl Into<MessageReference>) -> Self
pub fn reference_message(self, reference: impl Into<MessageReference>) -> Self
Set the message this reply or forward is referring to.
Sourcepub fn components(self, components: Vec<CreateActionRow>) -> Self
pub fn components(self, components: Vec<CreateActionRow>) -> Self
Sets the components of this message.
Adds a clickable button to this message.
Convenience method that wraps Self::components
. Arranges buttons in action rows
automatically.
Adds an interactive select menu to this message.
Convenience method that wraps Self::components
.
Sourcepub fn flags(self, flags: MessageFlags) -> Self
pub fn flags(self, flags: MessageFlags) -> Self
Sets the flags for the message.
Sourcepub fn sticker_id(self, sticker_id: impl Into<StickerId>) -> Self
pub fn sticker_id(self, sticker_id: impl Into<StickerId>) -> Self
Sets a single sticker ID to include in the message.
Note: This will replace all existing stickers. Use Self::add_sticker_id()
to keep
existing stickers.
Sourcepub fn sticker_ids<T: Into<StickerId>>(
self,
sticker_ids: impl IntoIterator<Item = T>,
) -> Self
pub fn sticker_ids<T: Into<StickerId>>( self, sticker_ids: impl IntoIterator<Item = T>, ) -> Self
Sets a list of sticker IDs to include in the message.
Note: There can be a maximum of 3 stickers in a message.
Note: This will replace all existing stickers. Use Self::add_sticker_id()
or
Self::add_sticker_ids()
to keep existing stickers.
Sourcepub fn add_sticker_id(self, sticker_id: impl Into<StickerId>) -> Self
pub fn add_sticker_id(self, sticker_id: impl Into<StickerId>) -> Self
Add a sticker ID for the message.
Note: There can be a maximum of 3 stickers in a message.
Note: This will keep all existing stickers. Use Self::sticker_id()
to replace
existing sticker.
Sourcepub fn add_sticker_ids<T: Into<StickerId>>(
self,
sticker_ids: impl IntoIterator<Item = T>,
) -> Self
pub fn add_sticker_ids<T: Into<StickerId>>( self, sticker_ids: impl IntoIterator<Item = T>, ) -> Self
Add multiple sticker IDs for the message.
Note: There can be a maximum of 3 stickers in a message.
Note: This will keep all existing stickers. Use Self::sticker_ids()
to replace
existing stickers.
Sourcepub fn nonce(self, nonce: Nonce) -> Self
pub fn nonce(self, nonce: Nonce) -> Self
Can be used to verify a message was sent (up to 25 characters). Value will appear in
Message::nonce
See Self::enforce_nonce
if you would like discord to perform de-duplication.
Sourcepub fn enforce_nonce(self, enforce_nonce: bool) -> Self
pub fn enforce_nonce(self, enforce_nonce: bool) -> Self
If true and Self::nonce
is provided, it will be checked for uniqueness in the past few
minutes. If another message was created by the same author with the same nonce, that
message will be returned and no new message will be created.
Sourcepub fn poll(self, poll: CreatePoll<Ready>) -> Self
pub fn poll(self, poll: CreatePoll<Ready>) -> Self
Sets the Poll
for this message.
Trait Implementations§
Source§impl Builder for CreateMessage
impl Builder for CreateMessage
Source§fn execute<'life0, 'async_trait>(
self,
cache_http: impl 'async_trait + CacheHttp,
__arg2: Self::Context<'life0>,
) -> Pin<Box<dyn Future<Output = Result<Self::Built>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
self,
cache_http: impl 'async_trait + CacheHttp,
__arg2: Self::Context<'life0>,
) -> Pin<Box<dyn Future<Output = Result<Self::Built>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Send a message to the channel.
Note: Requires the Send Messages permission. Additionally, attaching files requires the Attach Files permission.
Note: Message contents must be under 2000 unicode code points, and embeds must be under 6000 code points.
§Errors
Returns a ModelError::MessageTooLong
if the message contents are over the above limits.
If the cache
is enabled, returns a ModelError::InvalidPermissions
if the current user
lacks permission. Otherwise returns Error::Http
, as well as if invalid data is given.
Source§type Context<'ctx> = (ChannelId, Option<GuildId>)
type Context<'ctx> = (ChannelId, Option<GuildId>)
type Built = Message
Source§impl Clone for CreateMessage
impl Clone for CreateMessage
Source§fn clone(&self) -> CreateMessage
fn clone(&self) -> CreateMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more