9 个版本 (有破坏性更新)
0.7.0 | 2022 年 7 月 26 日 |
---|---|
0.6.1 | 2021 年 2 月 1 日 |
0.6.0 | 2021 年 1 月 10 日 |
0.5.1 | 2020 年 11 月 28 日 |
#1599 in 网页编程
每月 29 次下载
85KB
1K SLoC
serenity-utils
一个库,为使用 serenity 创建的 Discord 机器人提供转换、提示和菜单功能。
此库提供了易于实现以下功能的实现:
- 使用消息或反应提示获取用户响应。
- 显示基于反应的分页消息/菜单。
- 在发送之前以不同的方式格式化文本。
将字符串转换为 serenity 的特定于 guild 的模型。(已弃用;请改用 serenity 的ArgumentConvert
trait)使用字段访问创建嵌入和消息。(已弃用;请直接使用 serenity 的构建器)
安装和使用
要使用此包,请将以下内容添加到您的 Cargo.toml
[dependencies]
serenity_utils = "0.7.0"
注意:此包仅支持 serenity 的异步版本和至少 Rust 1.53(与最新版 serenity 保持一致)。
示例
以下是一些使用 serenity_utils 特性的示例。
反应提示
use serenity::{
model::prelude::{ChannelId, Message, ReactionType},
prelude::Context,
};
use serenity_utils::{prompt::reaction_prompt, Error};
async fn prompt(ctx: &Context, msg: &Message) -> Result<(), Error> {
// Emojis for the prompt.
let emojis = [
ReactionType::from('🐶'),
ReactionType::from('🐱'),
];
let prompt_msg = ChannelId(7).say(&ctx.http, "Dogs or cats?").await?;
// Creates the prompt and returns the result. Because of `reaction_prompt`'s
// return type, you can use the `?` operator to get the result.
// The `Ok()` value is the selected emoji's index (wrt the `emojis` slice)
// and the emoji itself. We don't require the emoji here, so we ignore it.
let (idx, _) = reaction_prompt(
ctx,
&prompt_msg,
&msg.author,
&emojis,
30.0
)
.await?;
if idx == 0 {
// Dogs!
} else {
// Cats!
}
Ok(())
}
菜单
use serenity::{
builder::CreateMessage,
model::prelude::Message,
prelude::Context,
};
use serenity_utils::{
menu::{Menu, MenuOptions},
Error,
};
async fn use_menu(ctx: &Context, msg: &Message) -> Result<(), Error> {
let mut page_one = CreateMessage::default();
page_one
.content("Page number one!")
.embed(|e| {
e.description("The first page!");
e
});
let mut page_two = CreateMessage::default();
page_two
.content("Page number two!")
.embed(|e| {
e.description("The second page!");
e
});
let pages = [page_one, page_two];
// Creates a new menu.
let menu = Menu::new(ctx, msg, &pages, MenuOptions::default());
// Runs the menu and returns optional `Message` used to display the menu.
let opt_message = menu.run().await?;
Ok(())
}
更多示例
更多详细说明此包功能的示例可以在 examples
目录中找到。
功能
此包的一些功能依赖于 serenity 的功能。
使用 serenity_utils
时,需要以下 serenity 功能:
- client
- collector
- gateway
- model
以下 serenity_utils
功能是可选的
- cache: 启用 serenity 的
cache
功能。在使用Conversion
trait 时,从用户名、标签或昵称获取Member
时需要。 - rustls_backend: 在所有平台上使用
Rustls
,一个纯 Rust 实现。 - native_tls_backend:在Windows上使用
SChannel
,在macOS上使用Secure Transport
,在其他平台上使用OpenSSL
。
cache 和 rustls_backend 默认启用。
- default_native_tls:启用与
serenity_utils
的默认功能,并使用native_tls_backend
。
它们启用与 serenity 同名的功能。
注意:必须使用 rustls_backend
和 native_tls_backend
之一。
您可以通过将以下内容添加到您的 Cargo.toml
来指定功能
[dependencies.serenity_utils]
version = "0.7.0"
# To disable default features.
default-features = false
# Choose features you need.
features = ["cache", "native_tls_backend"]
许可证
serenity_utils
在ISC许可证下可用。有关更多详细信息,请参阅LICENSE。
依赖关系
~6–22MB
~361K SLoC