#serenity #discord #messages #menus #interaction #rich #framework

serenity-rich-interaction

serenity discord 框架的菜单和自删除消息

10 个版本

0.3.1 2022年4月25日
0.3.0 2022年4月10日
0.2.6 2021年9月25日
0.2.5 2021年8月21日
0.1.0 2021年4月22日

#3 in #menus

每月下载量 25

Apache-2.0

42KB
963 代码行(不含注释)

Serenity Rich Interaction

此软件包已重命名为 serenity-additions 以避免与 Discord 交互混淆。

此软件包提供了一些与 serenity 进行丰富交互的类型,例如菜单和临时(自删除)消息。

使用方法

您必须在 serenity 客户端构建器中注册该模块。

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
}

菜单

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(())
}

临时消息

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(())
}

许可证

Apache-2.0

依赖项

~9–25MB
~410K SLoC