update
This commit is contained in:
parent
9a31727392
commit
3c5d7e3378
|
@ -148,6 +148,7 @@ checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
|
|||
name = "decoded_roobot"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"env_logger",
|
||||
"futures",
|
||||
"irc",
|
||||
"tokio",
|
||||
|
|
|
@ -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" }
|
59
src/main.rs
59
src/main.rs
|
@ -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(())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue