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 次下载
225KB
4K SLoC
Automate
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