diff --git a/ircbot/src/bin/factoids.rs b/ircbot/src/bin/factoids.rs index 6f7a321..3082fb1 100644 --- a/ircbot/src/bin/factoids.rs +++ b/ircbot/src/bin/factoids.rs @@ -24,11 +24,18 @@ use ircbot::config; use std::env; #[derive(Serialize, Deserialize, Debug)] -struct Message { +struct MessageToIRC { target: String, body: String } +#[derive(Serialize, Deserialize, Debug)] +struct MessageFromIRC { + from: String, + sender: String, + body: String +} + fn main() { if let Err(_) = env::var("RUST_LOG") { env::set_var("RUST_LOG", "info"); @@ -58,12 +65,12 @@ fn main() { let consumer_name = channel.basic_consume( move |chan: &mut Channel, _deliver: Deliver, _headers: BasicProperties, body: Vec| { debug!("Got a message"); - let msg: Result = serde_json::from_slice(&body); + let msg: Result = serde_json::from_slice(&body); if let Ok(msg) = msg { let trigger = msg.body.trim(); if let Some(response) = factoids.get(trigger) { - let resp = Some(Message{ - target: msg.target.clone(), + let resp = Some(MessageToIRC{ + target: msg.from.clone(), body: response.clone(), }); diff --git a/ircbot/src/bin/gateway.rs b/ircbot/src/bin/gateway.rs index 67aaaff..b1341aa 100644 --- a/ircbot/src/bin/gateway.rs +++ b/ircbot/src/bin/gateway.rs @@ -28,11 +28,18 @@ use std::thread; use std::env; #[derive(Serialize, Deserialize, Debug)] -struct Message { +struct MessageToIRC { target: String, body: String } +#[derive(Serialize, Deserialize, Debug)] +struct MessageFromIRC { + from: String, + sender: String, + body: String +} + fn main() { if let Err(_) = env::var("RUST_LOG") { env::set_var("RUST_LOG", "info"); @@ -72,7 +79,7 @@ fn main() { thread::spawn(move || { let consumer_name = readchan.basic_consume( move |_channel: &mut Channel, _deliver: Deliver, _headers: BasicProperties, body: Vec| { - let msg: Result = serde_json::from_slice(&body); + let msg: Result = serde_json::from_slice(&body); if let Ok(msg) = msg { server.send_privmsg(&msg.target, &msg.body).unwrap(); } @@ -90,10 +97,13 @@ fn main() { reader.for_each_incoming(|message| { match message.command { Command::PRIVMSG(ref _target, ref msg) => { - let msg = serde_json::to_string(&Message{ - target: message.response_target() + let msg = serde_json::to_string(&MessageFromIRC{ + from: message.response_target() .expect("a response target for a privmsg") .to_owned(), + sender: message.source_nickname() + .expect("a source nickname for a privmsg") + .to_owned(), body: msg.clone(), }).unwrap();