#discord-api #discord-bot #discord #api #async #api-token

nightly automate

一个用于与 Discord API 交互和创建机器人的异步库

10 个不稳定版本 (3 个破坏性更新)

0.4.0 2020 年 10 月 11 日
0.3.1 2020 年 4 月 25 日
0.3.0 2020 年 3 月 27 日
0.2.1 2020 年 2 月 29 日
0.1.3 2019 年 11 月 29 日

#2311 in 网页编程

每月 24 次下载

MIT 协议

225KB
4K SLoC

Automate   GitHub Workflow Status Crates.io Discord Documentation License

Automate 是一个用于与 Discord API 交互的低级异步 Rust 库。

入门指南

Automate 目前只从 1.45 开始支持 Rust nightly 版本。通常测试的版本和 CI 中使用的版本是 nightly-2020-08-03,您可以使用更近的版本,但请在遇到编译错误时切换回此版本。有关如何切换到 Rust nightly 版本的说明,请参阅 Rust 版本指南

为了在项目中使用 Automate,请将以下行添加到您的 Cargo.toml

[dependencies]
automate = "0.4.0"

然后您可以在 main.rs 中编写以下内容。此简单示例将响应 "Hello !" 给任何在任意频道发布消息的用户,同时忽略来自机器人的消息。为了使此示例正常工作,您需要定义 DISCORD_API_TOKEN 环境变量。您可以在 Discord 的开发者门户 Discord's developers portal 上创建机器人并生成令牌。

#[macro_use]
extern crate automate;

use automate::{Error, Configuration, Context, Automate};
use automate::gateway::MessageCreateDispatch;
use automate::http::CreateMessage;

#[listener]
async fn say_hello(ctx: &mut Context, data: &MessageCreateDispatch) -> Result<(), Error> {
    let message = &data.0;

    if message.author.id != ctx.bot.id {
        let content = Some(format!("Hello {}!", message.author.username));

        ctx.create_message(message.channel_id, CreateMessage {
            content,
            ..Default::default()
        }).await?;
    }

    Ok(())
}

fn main() {
    let config = Configuration::from_env("DISCORD_API_TOKEN")
        .register(stateless!(say_hello));

    Automate::launch(config)
}

有关更详细的示例,请参阅 examples 文件夹。您还可以参考 文档

即将推出的功能

尽管已经足够成熟以制作文本机器人,但 Automate 仍缺少一些即将实现的重要功能,例如

  • 缓存系统:用于避免每次需要成员或公会的信息时都进行API调用。您仍然可以手动实现,请参阅等级示例
  • 语音:可以在语音频道中与成员互动(踢出、静音、禁言他们...),但不能让机器人加入频道并接收或发送声音。
  • 更多示例:这不是一个功能,但这是正确展示库工作方式所必需的,如果您想提交一个示例,请随时发起拉取请求 :)

贡献

欢迎任何形式的贡献,从问题到拉取请求。对于重大更改,请首先打开一个问题以讨论您想进行更改的内容。请确保根据需要更新文档。

如果您需要支持、想报告一个错误或做出贡献,您可以使用此邀请加入库的Discord服务器:https://discord.gg/invite/PGGYXy2

许可

MIT许可下授权。

依赖项

~13–26MB
~393K SLoC