SerenityEmbed

Struct SerenityEmbed 

Source
pub struct SerenityEmbed {
Show 13 fields pub title: Option<String>, pub description: Option<String>, pub url: Option<String>, pub timestamp: Option<Timestamp>, pub color: Option<u32>, pub footer_text: Option<String>, pub footer_icon_url: Option<String>, pub image_url: Option<String>, pub thumbnail_url: Option<String>, pub author_name: Option<String>, pub author_url: Option<String>, pub author_icon_url: Option<String>, pub fields: Option<Vec<SerenityEmbedField>>,
}
Expand description

A builder for creating Discord embeds. This struct allows you to build rich embed messages for Discord using a fluent interface.

Fundamentally, this structure provides the same functionality as Serenity, but this library explicitly removes values that became unnecessary during optimization as a builder.

§Structure Values

In Serenity, embeddings are composed of multiple structures such as serenity::builder::CreateEmbedAuthor.

serenity-builder represents these structures as Triples or Doubles. Please refer to the documentation to determine which values correspond to them.

What is Triples or Doubles?

§Values

The following values have been removed from serenity::model::channel::Embed:

  • kind: The type of embed. Discord currently only supports “rich” embeds, so this field is unnecessary.
  • video: rich embeds do not support video content, so this field is unnecessary.
  • provider: rich embeds do not support provider information, so this field is unnecessary.

Fields§

§title: Option<String>

The title of the embed.

§description: Option<String>

The description of the embed.

Due to Discord API limitations, a maximum of 4096 characters can be used. If the character count exceeds this limit, crate::embed::SerenityEmbedConvertError::TooLongDescription will be returned during conversion.

§url: Option<String>§timestamp: Option<Timestamp>

The timestamp of the embed content. It will be displayed at the bottom of the embed.

§color: Option<u32>

The color of the embed.

Serenity uses serenity::model::colour::Colour, but Builder only allows direct specification from color codes. e.g. 0xff0000 for red.

§footer_text: Option<String>

The footer of the embed.

§footer_icon_url: Option<String>

The footer icon url of the embed.

§image_url: Option<String>

The image url of the embed.

§thumbnail_url: Option<String>

The thumbnail url of the embed.

§author_name: Option<String>

The author name of the embed.

§author_url: Option<String>

The author url of the embed.

§author_icon_url: Option<String>

The author icon url of the embed.

§fields: Option<Vec<SerenityEmbedField>>

The fields of the embed. (up to 25 fields)

Due to Discord API limitations, only 25 fields can be used. Any additional fields will result in a crate::embed::SerenityEmbedConvertError::TooManyFields being returned during conversion.

Implementations§

Source§

impl SerenityEmbed

Source

pub fn convert(&self) -> Result<CreateEmbed, SerenityEmbedConvertError>

Convert the embedded structure created in Builder into a model usable in Serenity.

let embed = SerenityEmbed::builder()
   .title("This is a test title.")
   /// ... other fields ...
  .build();

let serenity_embed = embed.convert()?; // Result<CreateEmbed, SerenityEmbedConvertError>
§How to use
// 1. Create a SerenityEmbed using the builder
let embed = SerenityEmbed::builder()
  .title("This is a test title.")
  .description("This is a test description.")
  .build(); // Don't forget!: If you forget this, you won't be able to use `convert()`.

// 2. Convert to Serenity's CreateEmbed
let serenity_embed = embed.convert()?; // Result<CreateEmbed, SerenityEmbedConvertError>

// 3. Use the converted embed in your Serenity message
let message = serenity::builder::CreateMessage::default()
 .content("Here is an embed!")
 // ... other message fields ...
§Errors

This function may return the following error:

Source§

impl SerenityEmbed

Source

pub fn builder() -> SerenityEmbedBuilder<((), (), (), (), (), (), (), (), (), (), (), (), ())>

Create a builder for building SerenityEmbed. On the builder, call .title(...)(optional), .description(...)(optional), .url(...)(optional), .timestamp(...)(optional), .color(...)(optional), .footer_text(...)(optional), .footer_icon_url(...)(optional), .image_url(...)(optional), .thumbnail_url(...)(optional), .author_name(...)(optional), .author_url(...)(optional), .author_icon_url(...)(optional), .fields(...)(optional) to set the values of the fields. Finally, call .build() to create the instance of SerenityEmbed.

Trait Implementations§

Source§

impl Clone for SerenityEmbed

Source§

fn clone(&self) -> SerenityEmbed

Returns a duplicate 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<'de> Deserialize<'de> for SerenityEmbed

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. 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> CloneToUninit for T
where T: Clone,

Source§

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

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,