#discord #api-wrapper #server-connection #spacebar #polyphony

chorus

一次与多个 Spacebar 兼容实例交互的库

14 次重大发布

0.15.0 2024 年 4 月 16 日
0.14.0 2024 年 1 月 19 日
0.13.0 2023 年 12 月 3 日
0.12.0 2023 年 11 月 22 日
0.0.0 2022 年 5 月 16 日

#2 in #server-connection

Download history 13/week @ 2024-04-19 11/week @ 2024-07-05 74/week @ 2024-07-26 11/week @ 2024-08-02

每月 85 次下载

MPL-2.0 许可证

580KB
11K SLoC

Chorus 是一个 Rust 库,充当 Spacebar Chat 和 Discord 的 API 包装器。它旨在易于使用,并与 Discord 和 Spacebar Chat 兼容。

您可以建立任意数量的连接到任意数量的服务器,并且可以同时使用它们。

Chorus 之旅

Chorus 将以用户为中心的 Spacebar 库的所有必需功能结合在一个包中。库代表您处理各种方面,例如速率限制、身份验证以及维护与网关的 WebSocket 连接。这意味着您可以专注于构建应用程序,而无需担心底层实现细节。

要开始使用 Chorus,请将其导入到项目中,方法是在您的 Cargo.toml 文件中添加以下内容

[dependencies]
chorus = "0.15.0"

建立连接

要连接到 Spacebar 兼容的服务器,您需要创建一个 Instance,如下所示

use chorus::instance::Instance;

#[tokio::main]
async fn main() {
    let instance = Instance::new("https://example.com")
        .await
        .expect("Failed to connect to the Spacebar server");
    // You can create as many instances of `Instance` as you want, but each `Instance` should likely be unique.
    dbg!(instance.instance_info);
    dbg!(instance.limits_information);
}

此实例现在可以用来登录、注册,并从那里开始以各种方式与服务器交互。

登录

正确登录将为您提供 ChorusUser 的实例,您可以使用它与服务器交互并操作账户。假设您已经在服务器上拥有账户,您可以像这样登录

use chorus::types::LoginSchema;
// Assume, you already have an account created on this instance. Registering an account works
// the same way, but you'd use the Register-specific Structs and methods instead.
let login_schema = LoginSchema {
    login: "[email protected]".to_string(),
    password: "Correct-Horse-Battery-Staple".to_string(),
    ..Default::default()
};
// Each user connects to the Gateway. The Gateway connection lives on a separate thread. Depending on
// the runtime feature you choose, this can potentially take advantage of all of your computers' threads.
let user = instance
    .login_account(login_schema)
    .await
    .expect("An error occurred during the login process");
dbg!(user.belongs_to);
dbg!(&user.object.read().unwrap().username);

支持的平台

所有主要桌面操作系统(Windows、macOS(aarch64/x86_64)、Linux(aarch64/x86_64))都受到支持。 wasm32-unknown-unknown 是从版本 0.12.0 开始支持的编译目标。这使得您可以在浏览器中或在任何支持 WebAssembly 的环境中使用 Chorus。

我们建议您查看示例目录以及文档以获取更多信息。

MSRV (最低支持的 Rust 版本)

Rust 1.67.1。这个数字可能会在任何时候改变,因为 Chorus 的版本还不是 1.0.0。

开发设置

请确保您已安装至少 Rust 1.67.1。您可以通过在终端运行 cargo --version 来检查您的 Rust 版本。要为 wasm32-unknown-unknown 编译,您需要安装 wasm32-unknown-unknown 目标。您可以通过运行 rustup target add wasm32-unknown-unknown 来完成此操作。

测试

通常,测试将需要您运行 Spacebar 服务器的本地实例。您可以在这里找到如何做到这一点的说明。您可以在这里找到预配置的服务器版本。建议使用预配置版本,因为某些功能(如“代理连接检查”)在此版本中已禁用,否则可能会破坏测试。

wasm

要测试 wasm,您需要运行 cargo install wasm-pack。然后,您可以运行 wasm-pack test --<chrome/firefox/safari> --headless -- --target wasm32-unknown-unknown --features="rt, client, voice_gateway" --no-default-features 来运行 wasm 的测试。

版本控制

此软件包使用语义版本控制 2.0.0 作为其版本控制方案。您可以在这里阅读规范。

贡献

请参阅CONTRIBUTING.md

进度跟踪/路线图

核心功能

消息

用户管理

附加功能

  • 服务器发现
  • 服务器模板

语音和视频

权限和角色

公会管理

管理

  • 频道管理(慢速模式等)
  • 用户处罚(禁言、踢出、封禁)
  • 审计日志

嵌入和丰富内容

  • 在消息中发送丰富内容(链接、图片、视频)
  • 自定义嵌入外观(标题、描述、颜色、字段)

Webhook

  • Webhook 创建和管理
  • 处理传入的 webhook 事件

文档和示例

  • 全面文档
  • 示例用法和代码片段
  • 教程和指南

依赖关系

~15–37MB
~704K SLoC