irc-rs

A simple Rustlang IRC Lib optimized for bots
git clone git://archive.git.mtrnord.blog/MTRNord/irc-rs.git
Log | Files | Refs | README | LICENSE

commit c9bb46504600aaab195e1c3644f8709cfc3a82cb
parent e5e9e633cd22c041665027c1c365687a68349a8c
Author: Marcel <mtrnord1@gmail.com>
Date:   Mon, 16 Jan 2017 17:35:54 +0100

(fix) Pong messages now have an origin

Diffstat:
Msrc/lib.rs | 22+++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs @@ -8,7 +8,7 @@ mod tests { fn Tconnect() { use irc::connect; let host: String = format!("130.83.198.4"); - let username: String = format!("testbot"); + let username: String = format!("nordbot"); let stream = connect(host, 6667, &username, &username); } } @@ -29,11 +29,6 @@ mod irc { let ip4_2: u8 = ip4_1 as _; let ServerAddress = IpAddr::V4(Ipv4Addr::new(ip1_2, ip2_2, ip3_2, ip4_2)); // Connect to localhost let SocketAddress = SocketAddr::new(ServerAddress, port); - - println!("split: {}", host_split[0]); - println!("int bytes: {}", ip1_2); - println!("bytes: {}", host_split[0].as_bytes()[1]); - println!("bytes: {}", SocketAddress); let mut isConnected = false; let mut stream = BufStream::new(TcpStream::connect(SocketAddress).unwrap()); let nick = format!("NICK {}\r\n", username); @@ -51,10 +46,19 @@ mod irc { if r.is_empty(){ g = 0; }else{ - if r.clone().contains("004") { + let server_message_raw = r.clone(); + println!("{}", r.clone()); + if server_message_raw.contains("004") { isConnected = true; - } else if r.clone().contains("PING") { - stream.write(b"PONG\r\n"); + println!("connected"); + } else if server_message_raw.contains("PING") { + let mut server_message_vec: Vec<&str> = server_message_raw.split("\n").collect(); + server_message_vec.pop(); + let server_message_ping_index = server_message_vec.iter().position(|&r| r.contains("PING")).unwrap(); + let server_message: Vec<&str> = server_message_vec[server_message_ping_index].split(" ").collect(); + let pong = format!("PONG :{}\r\n", server_message_vec[server_message_ping_index].trim_left()); + stream.write(pong.as_bytes()); + println!("pong"); stream.flush(); } }