shuttle-serenity

Crates.ioshuttle-serenity
lib.rsshuttle-serenity
version0.43.0
sourcesrc
created_at2023-03-14 12:34:52.920441
updated_at2024-04-02 12:27:40.215332
descriptionService implementation to run a serenity server on shuttle
homepage
repository
max_upload_size
id809819
Jocelyn Boullier (Kazy)

documentation

README

## Shuttle service integration for the Serenity Discord bot framework Serenity 0.12 is used by default. Poise 0.6 is also supported. Serenity 0.11 is supported by using these feature flags (native TLS also available): ```toml,ignore serenity = { version = "0.11.7", features = ["..."] } shuttle-serenity = { version = "0.43.0", default-features = false, features = ["serenity-0-11-rustls_backend"] } ``` ### Example ```rust,ignore use anyhow::Context as _; use serenity::async_trait; use serenity::model::channel::Message; use serenity::model::gateway::Ready; use serenity::prelude::*; use shuttle_runtime::SecretStore; use tracing::{error, info}; struct Bot; #[async_trait] impl EventHandler for Bot { async fn message(&self, ctx: Context, msg: Message) { if msg.content == "!hello" { if let Err(e) = msg.channel_id.say(&ctx.http, "world!").await { error!("Error sending message: {:?}", e); } } } async fn ready(&self, _: Context, ready: Ready) { info!("{} is connected!", ready.user.name); } } #[shuttle_runtime::main] async fn serenity( #[shuttle_runtime::Secrets] secrets: SecretStore, ) -> shuttle_serenity::ShuttleSerenity { // Get the discord token set in `Secrets.toml` let token = secrets.get("DISCORD_TOKEN").context("'DISCORD_TOKEN' was not found")?; // Set gateway intents, which decides what events the bot will be notified about let intents = GatewayIntents::GUILD_MESSAGES | GatewayIntents::MESSAGE_CONTENT; let client = Client::builder(&token, intents) .event_handler(Bot) .await .expect("Err creating client"); Ok(client.into()) } ```
Commit count: 0

cargo fmt