2个版本
使用旧的Rust 2015
0.1.1 | 2017年11月8日 |
---|---|
0.1.0 | 2017年9月22日 |
#28 in #listener
15KB
183 行
yobot
注意:这是由我(@stuartnelson3)分叉的,目的是更新并在此处发布。所有荣誉归原作者Martin Conte Mac Donell所有 [email protected]。
Yobot是一个可扩展的Slack机器人。您可以通过添加定义正则表达式的监听器来处理Slack频道上的实时事件。
您需要创建一个机器人,然后在启动Yobot
时提供其API令牌和名称。请参阅examples/
中的示例
监听器
监听器提供了一个Regex
,主循环使用它来检查监听器是否感兴趣。如果正则表达式匹配,则在处理程序上调用handle
,传递消息和RtmClient。然后监听器可以进行一些工作并使用客户端发送其响应。
请注意,监听器上的panic(或崩溃)会导致整个客户端崩溃。
实现MessageListener
允许响应slack::Message
。目前创建处理程序的要求很少。handle
函数接收一个slack::Message
和一个slack::RtmClient
。监听器负责通过在re
上定义正则表达式来测试它是否感兴趣于回复。可选地调用cli.send_message
来发送响应。
示例
一个简单的回声处理程序可能看起来像以下这样
use regex::Regex;
use yobot::listener::{MessageListener, Message};
pub struct EchoListener {
regex: Regex
}
impl EchoListener {
pub fn new() -> EchoListener {
EchoListener {
regex: Regex::new(r".").unwrap()
}
}
}
impl MessageListener for EchoListener {
fn help(&self) -> &str {
"echo"
}
fn re(&self) -> &Regex {
&self.regex
}
fn handle(&self, message: &Message, cli: &slack::RtmClient) {
let _ = cli.sender().send_message(&message.channel, &message.text);
}
}
Yobot
Yobot是机器人的主结构。添加一些监听器,然后调用connect
来连接实时API并开始监听消息。
示例
fn main() {
let token = match env::var("SLACK_BOT_TOKEN") {
Ok(token) => token,
Err(_) => panic!("Failed to get SLACK_BOT_TOKEN from env"),
};
let bot_name = match env::var("SLACK_BOT_NAME") {
Ok(bot_name) => bot_name,
Err(_) => panic!("Failed to get SLACK_BOT_NAME from env"),
};
let listener = EchoListener::new();
let mut yobot = Yobot::new();
yobot.add_listener(listener);
yobot.connect(token, bot_name);
}
依赖关系
~18–27MB
~431K SLoC