#automate #discord-api #bot #macro #listener #channel #generate

nightly macro automate-derive

为automate库提供推导宏

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日

#39 in #listener

每月下载量 48
用于 automate

MIT 许可协议

51KB
1K 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 开发者门户 上创建机器人并生成令牌。

#[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。您仍然可以手动实现它,请参阅 levels 示例
  • 语音:可以与语音频道的成员进行交互(踢出、静音、禁音他们...),但无法使机器人加入频道并接收或发送声音。
  • 更多示例:这不是一个功能,但它是正确展示库工作方式所必需的。如果您想提交示例,请随时发起拉取请求 :)

贡献

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

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

许可证

根据 MIT 许可证 许可。

依赖关系

~2MB
~42K SLoC