10 releases
0.3.1 | Apr 25, 2022 |
---|---|
0.3.0 | Apr 10, 2022 |
0.2.6 | Sep 25, 2021 |
0.2.5 | Aug 21, 2021 |
0.1.0 | Apr 22, 2021 |
#3 in #menus
25 downloads per month
42KB
963 lines
Serenity Rich Interaction
This crate was renamed to serenity-additions to avoid confusions with discords interactions.
This crate provides some types for rich interactions with serenity such as Menus and Ephemeral (self deleting) Messages.
Usage
You have to register the module in the serenity client builder.
use serenity::client::Client;
use serenity_rich_interaction::RegisterRichInteractions;
#[tokio::main]
async fn get_client {
// stuff
let client = Client::builder("TOKEN").register_rich_interactions().await?;
// stuff
}
Menu
use serenity::builder::CreateMessage;
use serenity::client::Context;
use serenity::model::id::ChannelId;
use serenity_rich_interaction::menu::{MenuBuilder, Page};
use std::time::Duration;
use serenity_rich_interaction::Result;
pub async fn create_menu(
ctx: &Context,
channel_id: ChannelId,
) -> Result<()> {
let mut message1 = CreateMessage::default();
message1.content("Hello");
let mut message2 = CreateMessage::default();
message2.content("World");
MenuBuilder::new_paginator()
.timeout(Duration::from_secs(120))
.add_page(Page::new_static(message1))
.add_page(Page::new_static(message2))
.show_help()
.build(ctx, channel_id)
.await?;
Ok(())
}
Ephemeral Message
use serenity_rich_interaction::core::SHORT_TIMEOUT;
use serenity_rich_interaction::ephemeral_message::EphemeralMessage;
use serenity_rich_interaction::Result;
use serenity::client::Context;
use serenity::model::id::ChannelId;
pub async fn create_ephemeral_message(ctx: &Context, channel_id: ChannelId) -> Result<()> {
EphemeralMessage::create(&ctx.http, channel_id, SHORT_TIMEOUT, |m| {
m.content("Hello World")
}).await?;
Ok(())
}
License
Apache-2.0
Dependencies
~9–25MB
~410K SLoC