Skip to main content

Crate discord_hook

Crate discord_hook 

Source
Expand description

discord_hook — Send messages to Discord via webhooks.

§Quick start

use discord_hook::{WebhookClient, WebhookMessage, Embed};

#[tokio::main]
async fn main() -> Result<(), discord_hook::WebhookError> {
    let client = WebhookClient::new("https://discord.com/api/webhooks/ID/TOKEN")?;

    let message = WebhookMessage::builder()
        .content("Hello from discord_hook!")
        .username("MyBot")
        .embed(
            Embed::builder()
                .title("Rich embed")
                .description("Supports titles, fields, colours, and more.")
                .color(0x5865F2)   // Discord blurple
                .field("Library", "discord_hook", true)
                .build(),
        )
        .build()?;

    client.send(&message).await
}

§Rate limits

When Discord returns HTTP 429 the client surfaces a WebhookError::RateLimited error that contains retry_after_ms. Use that value to back off before retrying.

Re-exports§

pub use client::WebhookClient;
pub use client::WebhookClientBuilder;
pub use error::WebhookError;
pub use message::AllowedMentionType;
pub use message::AllowedMentions;
pub use message::Embed;
pub use message::EmbedAuthor;
pub use message::EmbedBuilder;
pub use message::EmbedField;
pub use message::EmbedFooter;
pub use message::EmbedImage;
pub use message::EmbedThumbnail;
pub use message::WebhookMessage;
pub use message::WebhookMessageBuilder;
pub use message::flags;
pub use message::json_code_block;

Modules§

client
error
macros
message

Macros§

discord_message
Build a [WebhookMessage] using key = value syntax.
embed
Build an [Embed] using key = value syntax.

Traits§

WebhookSender
Common interface implemented by every hooksmith webhook client.