Begin detecting mentions, and slicing to the actual message portion
Also convert source_nick to a plain string, instead of an Option. Next should be making weather code get weather for specified locations.
This commit is contained in:
parent
4df059bfc1
commit
f450366777
3 changed files with 76 additions and 5 deletions
24
src/main.rs
24
src/main.rs
|
@ -1,11 +1,13 @@
|
|||
extern crate irc;
|
||||
extern crate hyper;
|
||||
extern crate rustc_serialize;
|
||||
extern crate regex;
|
||||
|
||||
use std::io::Read;
|
||||
use irc::client::prelude::*;
|
||||
use hyper::{Client};
|
||||
use rustc_serialize::json::{self};
|
||||
use regex::Regex;
|
||||
|
||||
static WEATHER_API_BASE: &'static str = "http://api.wunderground.com/api/";
|
||||
|
||||
|
@ -26,15 +28,27 @@ fn main() {
|
|||
|
||||
fn handle_privmsg(target: &String, message_body: &String, message_obj: &Message, server: &IrcServer) {
|
||||
println!("Received message in {} from {}: {}", target, message_obj.source_nickname().unwrap(), message_body);
|
||||
let source_nick = message_obj.source_nickname();
|
||||
if message_body.contains("rust-bot") {
|
||||
server.send_privmsg(target, "Hello!").unwrap();
|
||||
} else if message_body.contains("test_get_weather") {
|
||||
let source_nick = message_obj.source_nickname().unwrap();
|
||||
let my_nick = server.current_nickname();
|
||||
let mentions_regex = Regex::new(&format!("({}(:|,) )(.+)$", my_nick)).unwrap();
|
||||
let mut inner_message = String::new();
|
||||
match mentions_regex.captures(message_body) {
|
||||
Some(capture) => match capture.at(3) {
|
||||
Some(inner_message_match) => {inner_message = String::from(inner_message_match); println!("mentioned_message: {}", inner_message)},
|
||||
_ => (),
|
||||
},
|
||||
_ => (),
|
||||
}
|
||||
println!("mentioned_message: {}", inner_message);
|
||||
|
||||
if inner_message == String::from("test") {
|
||||
server.send_privmsg(target, &format!("{}: Hello!", source_nick)).unwrap();
|
||||
} else if inner_message.starts_with("weather") {
|
||||
match server.config().options {
|
||||
None => println!("Options not configured!"),
|
||||
Some(ref options) => match options.get("wunderground_api_key") {
|
||||
None => println!("wunderground_api_key not configured!"),
|
||||
Some(api_key) => server.send_privmsg(target, &format!("{}: {}", source_nick.unwrap(), &test_get_weather(api_key))).unwrap(),
|
||||
Some(api_key) => server.send_privmsg(target, &format!("{}: {}", source_nick, &test_get_weather(api_key))).unwrap(),
|
||||
}
|
||||
}
|
||||
} else if message_body.contains("bot-quit") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue