[][src]Struct serenity::utils::MessageBuilder

pub struct MessageBuilder(pub String);

The Message Builder is an ergonomic utility to easily build a message, by adding text and mentioning mentionable structs.

The finalized value can be accessed via build or the inner value.

Examples

Build a message, mentioning a user and an emoji, and retrieving the value:

use serenity::utils::MessageBuilder;

// assuming an `emoji` and `user` have already been bound

let content = MessageBuilder::new()
    .push("You sent a message, ")
    .mention(&user)
    .push("! ")
    .mention(&emoji)
    .build();

Methods

impl MessageBuilder
[src]

Creates a new, empty builder.

Examples

Create a new MessageBuilder:

use serenity::utils::MessageBuilder;

let message = MessageBuilder::new();

// alternatively:
let message = MessageBuilder::default();

Pulls the inner value out of the builder.

Examples

Create a string mentioning a channel by Id, and then suffixing "!", and finally building it to retrieve the inner String:

use serenity::model::id::ChannelId;
use serenity::utils::MessageBuilder;

let channel_id = ChannelId(81384788765712384);

let content = MessageBuilder::new()
    .channel(channel_id)
    .push("!")
    .build();

assert_eq!(content, "<#81384788765712384>!");

This is equivalent to simply retrieving the tuple struct's first value:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push("test").0;

assert_eq!(content, "test");

Mentions the GuildChannel in the built message.

This accepts anything that converts into a ChannelId. Refer to ChannelId's documentation for more information.

Refer to ChannelId's Display implementation for more information on how this is formatted.

Examples

Mentioning a Channel by Id:

use serenity::model::id::ChannelId;
use serenity::utils::MessageBuilder;

let channel_id = ChannelId(81384788765712384);

let content = MessageBuilder::new()
    .push("The channel is: ")
    .channel(channel_id)
    .build();

assert_eq!(content, "The channel is: <#81384788765712384>");

Displays the given emoji in the built message.

Refer to Emojis Display implementation for more information on how this is formatted.

Examples

Mention an emoji in a message's content:

use serenity::model::guild::Emoji;
use serenity::model::id::EmojiId;
use serenity::utils::MessageBuilder;

let emoji = Emoji {
    animated: false,
    id: EmojiId(302516740095606785),
    managed: true,
    name: "smugAnimeFace".to_string(),
    require_colons: true,
    roles: vec![],
};

let message = MessageBuilder::new()
    .push("foo ")
    .emoji(&emoji)
    .push(".")
    .build();

assert_eq!(message, "foo <:smugAnimeFace:302516740095606785>.");

Mentions something that implements the Mentionable trait.

Pushes a string to the internal message content.

Note that this does not mutate either the given data or the internal message content in anyway prior to appending the given content to the internal message.

Examples

use serenity::utils::MessageBuilder;

let message = MessageBuilder::new().push("test");

assert_eq!(message.push("ing").0, "testing");

Pushes a codeblock to the content, with optional syntax highlighting.

Examples

Pushing a Rust codeblock:

This example is not tested
use serenity::utils::MessageBuilder;

let code = r#"
fn main() {
    println!("Hello, world!");
}
"#;

let content = MessageBuilder::new()
    .push_codeblock(code, Some("rust"))
    .build();

let expected = r#"```rust
fn main() {
    println!("Hello, world!");
}
```"#;

assert_eq!(content, expected);

Pushing a codeblock without a language:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
    .push_codeblock("hello", None)
    .build();

assert_eq!(content, "```\nhello\n```");

Pushes inlined monospaced text to the content.

Examples

Display a server configuration value to the user:

use serenity::utils::MessageBuilder;

let key = "prefix";
let value = "&";

let content = MessageBuilder::new()
    .push("The setting ")
    .push_mono(key)
    .push(" for this server is ")
    .push_mono(value)
    .push(".")
    .build();

let expected = format!("The setting `{}` for this server is `{}`.",
                       key,
                       value);

assert_eq!(content, expected);

Pushes inlined italicized text to the content.

Examples

Emphasize information to the user:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
    .push("You don't ")
    .push_italic("always need")
    .push(" to italicize ")
    .push_italic("everything")
    .push(".")
    .build();

let expected = "You don't _always need_ to italicize _everything_.";

assert_eq!(content, expected);

Pushes an inline bold text to the content.

Pushes an underlined inline text to the content.

Pushes a strikethrough inline text to the content.

Pushes the given text with a newline appended to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_line("hello").push("world").build();

assert_eq!(content, "hello\nworld");

Pushes inlined monospace text with an added newline to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_mono_line("hello").push("world").build();

assert_eq!(content, "`hello`\nworld");

Pushes an inlined italicized text with an added newline to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_italic_line("hello").push("world").build();

assert_eq!(content, "_hello_\nworld");

Pushes an inline bold text with an added newline to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_bold_line("hello").push("world").build();

assert_eq!(content, "**hello**\nworld");

Pushes an underlined inline text with an added newline to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_underline_line("hello").push("world").build();

assert_eq!(content, "__hello__\nworld");

Pushes a strikethrough inline text with a newline added to the content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_strike_line("hello").push("world").build();

assert_eq!(content, "~~hello~~\nworld");

Pushes text to your message, but normalizing content - that means ensuring that there's no unwanted formatting, mention spam etc.

Pushes a code-block to your message normalizing content.

Pushes an inline monospaced text to the content normalizing content.

Pushes an inline italicized text to the content normalizing content.

Pushes an inline bold text to the content normalizing content.

Pushes an underlined inline text to the content normalizing content.

Pushes a strikethrough inline text to the content normalizing content.

Pushes text with a newline appended to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new().push_line_safe("Hello @everyone")
                                   .push("How are you?")
                                   .build();

assert_eq!(content, "Hello @\u{200B}everyone\nHow are you?");

Pushes an inline monospaced text with added newline to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
                .push_mono_line_safe("`hello @everyone`")
                .push("world").build();

assert_eq!(content, "`'hello @\u{200B}everyone'`\nworld");

Pushes an inline italicized text with added newline to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
                .push_italic_line_safe("@everyone")
                .push("Isn't a mention.").build();

assert_eq!(content, "_@\u{200B}everyone_\nIsn't a mention.");

Pushes an inline bold text with added newline to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
                .push_bold_line_safe("@everyone")
                .push("Isn't a mention.").build();

assert_eq!(content, "**@\u{200B}everyone**\nIsn't a mention.");

Pushes an underlined inline text with added newline to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
                .push_underline_line_safe("@everyone")
                .push("Isn't a mention.").build();

assert_eq!(content, "__@\u{200B}everyone__\nIsn't a mention.");

Pushes a strikethrough inline text with added newline to the content normalizing content.

Examples

Push content and then append a newline:

use serenity::utils::MessageBuilder;

let content = MessageBuilder::new()
                .push_strike_line_safe("@everyone")
                .push("Isn't a mention.").build();

assert_eq!(content, "~~@\u{200B}everyone~~\nIsn't a mention.");

Mentions the Role in the built message.

This accepts anything that converts into a RoleId. Refer to RoleId's documentation for more information.

Refer to RoleId's Display implementation for more information on how this is formatted.

Mentions the User in the built message.

This accepts anything that converts into a UserId. Refer to UserId's documentation for more information.

Refer to UserId's Display implementation for more information on how this is formatted.

Trait Implementations

impl Default for MessageBuilder
[src]

Returns the "default value" for a type. Read more

impl Clone for MessageBuilder
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Debug for MessageBuilder
[src]

Formats the value using the given formatter. Read more

impl Display for MessageBuilder
[src]

Formats the message builder into a string.

This is done by simply taking the internal value of the tuple-struct and writing it into the formatter.

Examples

Create a message builder, and format it into a string via the format! macro:

use serenity::utils::MessageBuilder;

Auto Trait Implementations

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

Performs the conversion.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

Converts the given value to a String. Read more

impl<T> ToOwned for T where
    T: Clone
[src]

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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

impl<T> From for T
[src]

Performs the conversion.

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Borrow for T where
    T: ?Sized
[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut for T where
    T: ?Sized
[src]

Mutably borrows from an owned value. Read more

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more

impl<T> Erased for T

impl<T> Typeable for T where
    T: Any

Get the TypeId of this object.

impl<T> DebugAny for T where
    T: Any + Debug
[src]

impl<T> CloneAny for T where
    T: Clone + Any
[src]

impl<T> UnsafeAny for T where
    T: Any