pub struct UpdateWebhookMessage<'a> { /* private fields */ }
Expand description

Update a message created by a webhook.

You can pass None to any of the methods to remove the associated field. Pass None to content to remove the content. You must ensure that the message still contains at least one of attachments, components, content, or embeds.

Examples

Update a webhook’s message by setting the content to test <@3> - attempting to mention user ID 3 - while specifying that no entities can be mentioned.

use twilight_http::Client;
use twilight_model::{channel::message::AllowedMentions, id::Id};

let client = Client::new("token".to_owned());
client
    .update_webhook_message(Id::new(1), "token here", Id::new(2))
    // By creating a default set of allowed mentions, no entity can be
    // mentioned.
    .allowed_mentions(Some(&AllowedMentions::default()))
    .content(Some("test <@3>"))?
    .await?;

Implementations§

source§

impl<'a> UpdateWebhookMessage<'a>

source

pub const fn allowed_mentions( self, allowed_mentions: Option<&'a AllowedMentions> ) -> Self

Specify the AllowedMentions for the message.

Unless otherwise called, the request will use the client’s default allowed mentions. Set to None to ignore this default.

source

pub fn attachments( self, attachments: &'a [Attachment] ) -> Result<Self, MessageValidationError>

Attach multiple new files to the message.

This method clears previous calls.

Errors

Returns an error of type AttachmentDescriptionTooLarge if the attachments’s description is too large.

Returns an error of type AttachmentFilename if any filename is invalid.

source

pub fn components( self, components: Option<&'a [Component]> ) -> Result<Self, MessageValidationError>

Set the message’s list of Components.

Calling this method will clear previous calls.

Requires a webhook owned by the application.

Editing

Pass None to clear existing components.

Errors

Refer to the errors section of twilight_validate::component::component for a list of errors that may be returned as a result of validating each provided component.

source

pub fn content( self, content: Option<&'a str> ) -> Result<Self, MessageValidationError>

Set the message’s content.

The maximum length is 2000 UTF-16 characters.

Editing

Pass None to remove the message content. This is impossible if it would leave the message empty of attachments, content, or embeds.

Errors

Returns an error of type ContentInvalid if the content length is too long.

source

pub fn embeds( self, embeds: Option<&'a [Embed]> ) -> Result<Self, MessageValidationError>

Set the message’s list of embeds.

Calling this method will clear previous calls.

The amount of embeds must not exceed EMBED_COUNT_LIMIT. The total character length of each embed must not exceed EMBED_TOTAL_LENGTH characters. Additionally, the internal fields also have character limits. See Discord Docs/Embed Limits.

Editing

To keep all embeds, do not call this method. To modify one or more embeds in the message, acquire them from the previous message, mutate them in place, then pass that list to this method. To remove all embeds, pass None. This is impossible if it would leave the message empty of attachments, content, or embeds.

Examples

Create an embed and update the message with the new embed. The content of the original message is unaffected and only the embed(s) are modified.

use twilight_http::Client;
use twilight_model::id::Id;
use twilight_util::builder::embed::EmbedBuilder;

let client = Client::new("token".to_owned());

let webhook_id = Id::new(1);
let message_id = Id::new(2);

let embed = EmbedBuilder::new()
    .description(
        "Powerful, flexible, and scalable ecosystem of Rust \
    libraries for the Discord API.",
    )
    .title("Twilight")
    .url("https://twilight.rs")
    .validate()?
    .build();

client
    .update_webhook_message(webhook_id, "token", message_id)
    .embeds(Some(&[embed]))?
    .await?;
Errors

Returns an error of type TooManyEmbeds if there are too many embeds.

Otherwise, refer to the errors section of twilight_validate::embed::embed for a list of errors that may occur.

source

pub fn keep_attachment_ids( self, attachment_ids: &'a [Id<AttachmentMarker>] ) -> Self

Specify multiple Id<AttachmentMarker>s already present in the target message to keep.

If called, all unspecified attachments (except ones added with attachments) will be removed from the message. If not called, all attachments will be kept.

source

pub const fn payload_json(self, payload_json: &'a [u8]) -> Self

JSON encoded body of request fields.

If this method is called, all other methods are ignored, except for attachments. If uploading attachments, you must ensure that the attachments key corresponds properly to the provided list. See Discord Docs/Create Message and ExecuteWebhook::payload_json.

source

pub fn thread_id(self, thread_id: Id<ChannelMarker>) -> Self

Update in a thread belonging to the channel instead of the channel itself.

source

pub fn exec(self) -> ResponseFuture<Message>

👎Deprecated since 0.14.0: use .await or into_future instead

Execute the request, returning a future resolving to a Response.

Trait Implementations§

source§

impl IntoFuture for UpdateWebhookMessage<'_>

§

type Output = Result<Response<Message>, Error>

The output that the future will produce on completion.
§

type IntoFuture = ResponseFuture<Message>

Which kind of future are we turning this into?
source§

fn into_future(self) -> Self::IntoFuture

Creates a future from a value. Read more
source§

impl TryIntoRequest for UpdateWebhookMessage<'_>

source§

fn try_into_request(self) -> Result<Request, Error>

Try to convert a request builder into a raw Request. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
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 Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

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

§

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