This commit is contained in:
.[d]. 2021-02-17 17:32:34 -06:00
parent 9a31727392
commit 3c5d7e3378
3 changed files with 48 additions and 13 deletions

1
Cargo.lock generated
View File

@ -148,6 +148,7 @@ checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
name = "decoded_roobot"
version = "0.1.0"
dependencies = [
"env_logger",
"futures",
"irc",
"tokio",

View File

@ -15,3 +15,4 @@ path = "src/main.rs"
futures = { version = "0.3.*" }
tokio = {version = "0.2.*", features = ["full"] }
irc = { version = "0.14.0", path = "irc" }
env_logger = { version = "0.7.0" }

View File

@ -1,10 +1,12 @@
use irc::client::prelude::*;
use futures::prelude::*;
use std::time::Duration;
use irc::{client::prelude::*, error};
//use std::time::Duration;
#[tokio::main]
async fn main() -> irc::error::Result<()> {
let config = Config {
env_logger::init();
let cfg1 = Config {
nickname: Some("roobot".to_owned()),
server: Some("ircd.chat".to_owned()),
channels: vec!["#sh0rtbus".to_owned()],
@ -13,20 +15,51 @@ async fn main() -> irc::error::Result<()> {
..Default::default()
};
let mut client = Client::from_config(config).await?;
client.identify()?;
let configs = vec![cfg1];
let mut streams = Vec::new();
let mut senders = Vec::new();
let mut stream = client.stream()?;
let mut interval = tokio::time::interval(Duration::from_secs(60)).fuse();
for config in configs {
let mut client = Client::from_config(config).await?;
client.identify()?;
streams.push(client.stream()?);
senders.push(client.sender());
}
loop {
futures::select! {
m = stream.select_next_some() => {
println!("{}", m?);
}
_ = interval.select_next_some() => {
client.send_privmsg("#sh0rtbus", ".[d]. ssl+insecure rust bot")?;
let (message, index, _) =
futures::future::select_all(streams.iter_mut().map(|s| s.select_next_some())).await;
let message = message?;
let sender = &senders[index];
process_msg(sender, message)?;
}
}
fn process_msg(sender: &Sender, message: Message) -> error::Result<()> {
print!("{}", message);
let bothelpcmds: [&str; 3] = ["?list","?join","?msg"];
match message.command {
Command::PRIVMSG(ref target, ref msg) => {
//let string_list = vec!["?".to_string(), "roobot".to_string()];
//let joined = string_list.join("");
for bothelpcmd in &bothelpcmds{
if msg.contains(bothelpcmd) {
let string_list = vec![bothelpcmd.to_string(), " command noticed".to_string()];
let ircmsg = string_list.join("");
sender.send_privmsg(target, ircmsg)?;
if bothelpcmd == &"?list" {
sender.send_privmsg(target, "performing list operation")?;
}
}
}
}
_ => (),
}
Ok(())
}