#discord #discord-bot #discord-api #serenity-rs

skua

为 KenaBot 定制的 Serenity 分支

2 个版本

0.12.1 2024 年 2 月 13 日
0.12.0 2024 年 2 月 12 日

#17 in #discord-bot


用于 skua-voice

ISC 许可证

2MB
33K SLoC

docs-badge crates.io version rust-version-badge

skua (自定义 serenity 分支)

Skua 是 Discord API 的 Rust 库 Serenity 的分支。

Serenity 支持使用 Client::builder 进行机器人登录。

您也可以在登录前使用 validate_token 检查您的令牌。

登录后,您可以通过实现 trait(如 EventHandler::message)将处理程序添加到您的客户端以派发 Event。这将导致在收到 Event::MessageCreate 时调用处理程序。每个处理程序都会得到一个 Context,提供关于事件的详细信息。请参阅 客户端的模块级文档

Shard 由库透明处理,消除了不必要的复杂性。分片连接将自动为您处理。有关更多信息,请参阅 网关的文档

还为您提供了 Cache。当从 Discord API 通过事件接收数据时,将自动为您更新。当在 Context 上调用方法时,缓存将首先搜索相关数据,以避免对 Discord API 发出不必要的 HTTP 请求。有关更多信息,请参阅 缓存的模块级文档

请注意,尽管此文档将尽可能保持最新和准确,但 Discord 提供了 官方文档。如果您需要确保某些信息准确无误,请参考他们的文档。

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
skua = "0.12"
tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] }

MSRV 政策

Serenity 的最低支持 Rust 版本(MSRV)是 Rust 1.74。

我们选择在 当前 分支上保持 MSRV 稳定。这意味着它将在小版本发布之间保持不变。偶尔,依赖项可能会违反 SemVer并以破坏性的方式更新自己的 MSRV。因此,为了成功地使用较旧的 Rust 发布版构建 Serenity,可能需要固定它们的版本。

下一个 分支跟踪最新的 Rust 发布版作为其 MSRV。这允许在新语言功能稳定后快速开发,并从长远来看减少技术债务。当发布一个新的主要版本时,当前 上的 MSRV 将更新为 下一个 上的版本,我们将承诺支持该 MSRV 直到下一个主要版本。

特性

可以通过配置 Cargo.toml 来启用或禁用库的特性。

[dependencies.skua]
default-features = false
features = ["pick", "your", "feature", "names", "here"]
version = "0.12"

默认特性包括:buildercachechronoclientframeworkgatewayhttpmodelstandard_frameworkutilsrustls_backend

还有这些替代默认特性,它们需要设置 default-features = false

  • default_native_tls:使用 native_tls_backend 而不是默认的 rustls_backend
  • default_no_backend:排除默认后端,选择自己的后端。

如果您不确定选择哪个,请使用默认特性,不设置 default-features = false

以下是一个完整的特性列表

  • builder:与模型方法一起使用的构建器。
  • cache:缓存将存储有关公会、频道、用户和其他数据的信息,以避免执行 REST 请求。如果您内存不足,请勿启用此功能。
  • collector:收集器等待事件,例如接收用户的消息或消息上的反应,并允许以方便的方式响应事件。收集器可以配置为强制事件满足某些标准。
  • client:分片和事件处理程序的管理器,抽象化处理分片事件和更新缓存(如果启用)的工作。
  • framework:启用框架,这是一个允许简单命令解析、命令执行前/后的执行、前缀设置等的实用工具。
  • gateway:一个分片,用作通过 WebSocket 客户端与 Discord 网关通信的高级接口。
  • http:提供足够低级别的包装函数,以便可以通过 JsonMap 随意提供可选参数,以覆盖 Discord 的 REST API。
  • model:模型的方法实现,作为对 HTTP 函数的辅助方法。
  • standard_framework:框架的标准、默认实现。
  • utils:用户常用情况的实用函数。
  • voice:启用将语音插件注册到客户端,该客户端将处理来自 Discord 的实际语音连接。建议使用 lavalink-rsSongbird 作为语音插件。
  • default_native_tls:默认特性,但使用 native_tls_backend 而不是 rustls_backend
  • tokio_task_builder:启用 tokio 的 tracing 功能,并在设置 RUSTFLAGS="--cfg tokio_unstable" 时使用 tokio::task::Builder 来以带有名称的方式启动任务。
  • unstable_discord_api:启用没有稳定界面的Discord API功能。这些功能可能没有官方文档或可能会发生变化。
  • simd_json:如果目标CPU架构支持,启用API调用中的SIMD加速JSON解析和渲染。
  • temp_cache:启用通过HTTP API检索数据的功能中的临时缓存。
  • chrono:使用chrono crate来表示时间戳。如果禁用,则使用time crate。
  • interactions_endpoint:启用与Discord的Interactions Endpoint URL功能相关的工具。

要启用代码库的所有部分,请使用"full"功能。

对于可能更准确的信息,请检查Cargo.toml。

Serenity提供两个TLS后端,默认为rustls_backend,如果不使用默认功能,则需要选择一个。

  • rustls_backend:在所有平台上使用Rustls,这是一个纯Rust TLS实现。
  • native_tls_backend:在Windows上使用SChannel,在macOS上使用Secure Transport,在其他平台上使用OpenSSL。

如果您想启用除了cache以外的所有默认功能,例如,可以列出除该功能以外的所有功能。

[dependencies.skua]
default-features = false
features = [
    "builder",
    "chrono",
    "client",
    "framework",
    "gateway",
    "http",
    "model",
    "standard_framework",
    "utils",
    "rustls_backend",
]
version = "0.12"

依赖项

如果您使用native_tls_backend并且不在macOS或Windows上开发,您将需要

  • openssl

扩展Serenity的项目

  • lavalink-rs:到LavalinkAndesite的接口,基于Lavaplayer的音频发送节点。
  • Songbird:一个异步Rust库,用于Discord语音API。
  • Poise:实验性命令框架,具有高级功能,如编辑跟踪、单功能slash和前缀命令以及灵活的参数解析。

依赖项

~6–22MB
~351K SLoC