pub struct MessageBuilder(pub String);
Expand description
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 Self::build
or the inner value.
§Examples
Build a message, mentioning a Self::user
and an Self::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("! ")
.emoji(&emoji)
.build();
Tuple Fields§
§0: String
Implementations§
Source§impl MessageBuilder
impl MessageBuilder
Sourcepub fn new() -> MessageBuilder
pub fn new() -> MessageBuilder
Creates a new, empty builder.
§Examples
Create a new MessageBuilder
:
use serenity::utils::MessageBuilder;
let message = MessageBuilder::new();
// alternatively:
let message = MessageBuilder::default();
Sourcepub fn build(&mut self) -> String
pub fn build(&mut self) -> String
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::new(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 mut content = MessageBuilder::new();
content.push("test");
assert_eq!(content.build(), "test");
Sourcepub fn channel<C: Into<ChannelId>>(&mut self, channel: C) -> &mut Self
pub fn channel<C: Into<ChannelId>>(&mut self, channel: C) -> &mut Self
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::new(81384788765712384);
let content = MessageBuilder::new().push("The channel is: ").channel(channel_id).build();
assert_eq!(content, "The channel is: <#81384788765712384>");
Sourcepub fn emoji(&mut self, emoji: &Emoji) -> &mut Self
pub fn emoji(&mut self, emoji: &Emoji) -> &mut Self
Displays the given emoji in the built message.
Refer to Emoji
s Display implementation for more information on how this is formatted.
§Examples
Mention an emoji in a message’s content:
let message = MessageBuilder::new().push("foo ").emoji(&emoji).push(".").build();
assert_eq!(message, "foo <:smugAnimeFace:302516740095606785>.");
Sourcepub fn mention<M: Mentionable>(&mut self, item: &M) -> &mut Self
pub fn mention<M: Mentionable>(&mut self, item: &M) -> &mut Self
Mentions something that implements the Mentionable
trait.
Sourcepub fn push(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push(&mut self, content: impl Into<Content>) -> &mut Self
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 mut message = MessageBuilder::new();
message.push("test");
assert_eq!(
{
message.push("ing");
message.build()
},
"testing"
);
Sourcepub fn push_codeblock(
&mut self,
content: impl Into<Content>,
language: Option<&str>,
) -> &mut Self
pub fn push_codeblock( &mut self, content: impl Into<Content>, language: Option<&str>, ) -> &mut Self
Pushes a codeblock to the content, with optional syntax highlighting.
§Examples
Pushing a Rust codeblock:
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```");
Sourcepub fn push_mono(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_mono(&mut self, content: impl Into<Content>) -> &mut Self
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);
Sourcepub fn push_italic(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_italic(&mut self, content: impl Into<Content>) -> &mut Self
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);
Sourcepub fn push_bold(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_bold(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an inline bold text to the content.
Sourcepub fn push_underline(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_underline(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an underlined inline text to the content.
Sourcepub fn push_strike(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_strike(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a strikethrough inline text to the content.
Sourcepub fn push_spoiler(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_spoiler(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a spoiler’d inline text to the content.
Sourcepub fn push_quote(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_quote(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a quoted inline text to the content
Sourcepub fn push_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_mono_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_mono_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_italic_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_italic_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_bold_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_bold_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_underline_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_underline_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_strike_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_strike_line(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_spoiler_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_spoiler_line(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a spoiler’d 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_spoiler_line("hello").push("world").build();
assert_eq!(content, "||hello||\nworld");
Sourcepub fn push_quote_line(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_quote_line(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a quoted inline text to the content
§Examples
Push content and then append a newline:
use serenity::utils::MessageBuilder;
let content = MessageBuilder::new().push_quote_line("hello").push("world").build();
assert_eq!(content, "> hello\nworld");
Sourcepub fn push_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes text to your message, but normalizing content - that means ensuring that there’s no unwanted formatting, mention spam etc.
Sourcepub fn push_codeblock_safe(
&mut self,
content: impl Into<Content>,
language: Option<&str>,
) -> &mut Self
pub fn push_codeblock_safe( &mut self, content: impl Into<Content>, language: Option<&str>, ) -> &mut Self
Pushes a code-block to your message normalizing content.
Sourcepub fn push_mono_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_mono_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an inline monospaced text to the content normalizing content.
Sourcepub fn push_italic_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_italic_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an inline italicized text to the content normalizing content.
Sourcepub fn push_bold_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_bold_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an inline bold text to the content normalizing content.
Sourcepub fn push_underline_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_underline_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes an underlined inline text to the content normalizing content.
Sourcepub fn push_strike_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_strike_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a strikethrough inline text to the content normalizing content.
Sourcepub fn push_spoiler_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_spoiler_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a spoiler’d inline text to the content normalizing content.
Sourcepub fn push_quote_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_quote_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a quoted inline text to the content normalizing content.
Sourcepub fn push_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
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?");
Sourcepub fn push_mono_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_mono_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
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");
Sourcepub fn push_italic_line_safe(
&mut self,
content: impl Into<Content>,
) -> &mut Self
pub fn push_italic_line_safe( &mut self, content: impl Into<Content>, ) -> &mut Self
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.");
Sourcepub fn push_bold_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_bold_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
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.");
Sourcepub fn push_underline_line_safe(
&mut self,
content: impl Into<Content>,
) -> &mut Self
pub fn push_underline_line_safe( &mut self, content: impl Into<Content>, ) -> &mut Self
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.");
Sourcepub fn push_strike_line_safe(
&mut self,
content: impl Into<Content>,
) -> &mut Self
pub fn push_strike_line_safe( &mut self, content: impl Into<Content>, ) -> &mut Self
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.");
Sourcepub fn push_spoiler_line_safe(
&mut self,
content: impl Into<Content>,
) -> &mut Self
pub fn push_spoiler_line_safe( &mut self, content: impl Into<Content>, ) -> &mut Self
Pushes a spoiler’d 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_spoiler_line_safe("@everyone").push("Isn't a mention.").build();
assert_eq!(content, "||@\u{200B}everyone||\nIsn't a mention.");
Sourcepub fn push_quote_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
pub fn push_quote_line_safe(&mut self, content: impl Into<Content>) -> &mut Self
Pushes a quoted 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_quote_line_safe("@everyone").push("Isn't a mention.").build();
assert_eq!(content, "> @\u{200B}everyone\nIsn't a mention.");
Sourcepub fn quote_rest(&mut self) -> &mut Self
pub fn quote_rest(&mut self) -> &mut Self
Starts a multi-line quote, every push after this one will be quoted
Trait Implementations§
Source§impl Clone for MessageBuilder
impl Clone for MessageBuilder
Source§fn clone(&self) -> MessageBuilder
fn clone(&self) -> MessageBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for MessageBuilder
impl Debug for MessageBuilder
Source§impl Default for MessageBuilder
impl Default for MessageBuilder
Source§fn default() -> MessageBuilder
fn default() -> MessageBuilder
Source§impl Display for MessageBuilder
impl Display for MessageBuilder
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
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;