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