rust-irc/examples/build-bot.rs

50 lines
1.3 KiB
Rust
Raw Normal View History

2018-10-07 18:06:29 +02:00
extern crate irc;
2019-08-27 15:05:51 +02:00
use futures::prelude::*;
2018-10-07 18:06:29 +02:00
use irc::client::prelude::*;
use std::default::Default;
use std::env;
2019-08-27 15:05:51 +02:00
#[tokio::main]
async fn main() -> irc::error::Result<()> {
2018-10-07 18:06:29 +02:00
let repository_slug = env::var("TRAVIS_REPO_SLUG").unwrap();
let branch = env::var("TRAVIS_BRANCH").unwrap();
let commit = env::var("TRAVIS_COMMIT").unwrap();
let commit_message = env::var("TRAVIS_COMMIT_MESSAGE").unwrap();
let config = Config {
nickname: Some("irc-crate-ci".to_owned()),
server: Some("irc.pdgn.co".to_owned()),
use_ssl: Some(true),
..Default::default()
};
2019-08-27 15:05:51 +02:00
let mut client = Client::from_config(config).await?;
2018-10-07 18:06:29 +02:00
2019-08-27 15:05:51 +02:00
client.identify()?;
let mut stream = client.stream()?;
while let Some(message) = stream.next().await.transpose()? {
2018-10-07 18:06:29 +02:00
match message.command {
Command::Response(Response::RPL_ISUPPORT, _, _) => {
client.send_privmsg(
"#commits",
format!(
2018-10-13 00:11:02 +02:00
"[{}/{}] ({}) {}",
repository_slug,
branch,
&commit[..7],
commit_message
2018-10-07 18:06:29 +02:00
),
)?;
2019-08-27 15:05:51 +02:00
2018-10-07 18:06:29 +02:00
client.send_quit("QUIT")?;
}
_ => (),
2019-08-27 15:05:51 +02:00
}
}
2018-10-07 18:06:29 +02:00
2019-08-27 15:05:51 +02:00
Ok(())
2018-10-07 18:06:29 +02:00
}