Struct CreateMessage

Source
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:

  1. When sending a message without embeds or stickers, Self::content is the only required field that is required to be set.
  2. When sending an Self::embed, no other field is required.
  3. 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;

Discord docs

Implementations§

Source§

impl CreateMessage

Source

pub fn new() -> Self

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn add_file(self, file: CreateAttachment) -> Self

Appends a file to the message.

Note: Requires the Attach Files permission.

Source

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.

Source

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.

Source

pub fn allowed_mentions(self, allowed_mentions: CreateAllowedMentions) -> Self

Set the allowed mentions for the message.

Source

pub fn reference_message(self, reference: impl Into<MessageReference>) -> Self

Set the message this reply or forward is referring to.

Source

pub fn components(self, components: Vec<CreateActionRow>) -> Self

Sets the components of this message.

Source

pub fn button(self, button: CreateButton) -> Self

Adds a clickable button to this message.

Convenience method that wraps Self::components. Arranges buttons in action rows automatically.

Source

pub fn select_menu(self, select_menu: CreateSelectMenu) -> Self

Adds an interactive select menu to this message.

Convenience method that wraps Self::components.

Source

pub fn flags(self, flags: MessageFlags) -> Self

Sets the flags for the message.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn poll(self, poll: CreatePoll<Ready>) -> Self

Sets the Poll for this message.

Trait Implementations§

Source§

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,

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>)

Additional data that’s only required when sending a request off to the API.
Source§

type Built = Message

Source§

impl Clone for CreateMessage

Source§

fn clone(&self) -> CreateMessage

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CreateMessage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CreateMessage

Source§

fn default() -> CreateMessage

Returns the “default value” for a type. Read more
Source§

impl Serialize for CreateMessage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneDebuggableStorage for T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> CloneableStorage for T
where T: Any + Send + Sync + Clone,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DebuggableStorage for T
where T: Any + Send + Sync + Debug,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T