1 个不稳定版本
0.1.0 | 2023年9月24日 |
---|---|
0.0.1 |
|
#1 in #guilded
57KB
1.5K SLoC
guilded_rs
使用 Rust 创建 guilded 机器人的易于使用的库。
功能
示例文件夹
此文件夹用于展示如何使用库的实时示例工作。但也可以
用于测试库,因为我写得不好的单元测试,我有点讨厌它们。
任务池
使用任务池,您可以在后台创建运行的任务。
示例
这将每秒运行一次
bot.add_task(Task {
interval: Duration::from_secs(1),
handler: |_| {
println!("Hi from task that runs every second");
},
});
此任务将每10秒运行一次,并在一个频道中发送消息。
bot.add_task(Task {
interval: Duration::from_secs(10),
handler: |bot| {
let mut message = ChatMessage::default();
message.set_content("Content of the message");
let channel_id = "2b203b41-5409-436e-9ade-a3c1b640b594";
let is_reply = false;
match bot.send_chat_message(message, channel_id) {
Some(msg) => {
// msg is the message that just got created
}
None => {
// Returns None if the request failed.
// in this case look at the console for the error message.
// And if you need help with that don't be
// shy and send me a message on guilded.
}
}
},
});
事件处理器
目前,库解析的唯一事件是来自 WS 服务器的 ChatMessageCreated
事件
// The bot variable is the http client of the bot.
// While the event is the enum of the event
bot.add_event_handler(|_bot, event| match event {
Event::ChatMessageCreated(data) => {
println!("{:?}", data);
}
_ => {}
});
命令
如何声明命令的示例。
struct PingCommand;
impl Command for PingCommand {
fn name(&self) -> String {
"ping".to_string()
}
fn description(&self) -> String {
"returns pong".to_string()
}
fn handler(&self, ctx: CommandContext, _args: Vec<String>) {
let mut message = Message::default();
message.set_content("pong");
ctx.reply(message);
}
}
以下是将其添加到机器人的方法
let ping_command: PingCommand = PingCommand {};
bot.add_command(Box::new(ping_command));
依赖项
~8–20MB
~328K SLoC