check in the ban bot

This commit is contained in:
Graham Christensen 2018-01-10 19:55:57 -05:00
parent bc5c1ba69b
commit 4a84900dee
No known key found for this signature in database
GPG key ID: 06121D366FE9435C

91
ircbot/src/bin/ban.rs Normal file
View file

@ -0,0 +1,91 @@
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_json;
extern crate ircbot;
extern crate irc;
extern crate amqp;
extern crate env_logger;
#[macro_use]
extern crate log;
use irc::client::server::Server;
use irc::client::prelude::Command;
use irc::client::prelude::ServerExt;
use irc::client::prelude::IrcServer;
use irc::proto::mode::Mode;
use irc::proto::mode::ChannelMode;
use ircbot::config;
use std::thread;
use std::env;
#[derive(Serialize, Deserialize, Debug)]
struct Message {
target: String,
body: String
}
fn main() {
if let Err(_) = env::var("RUST_LOG") {
env::set_var("RUST_LOG", "info");
env_logger::init().unwrap();
info!("Defaulting RUST_LOG environment variable to info");
} else {
env_logger::init().unwrap();
}
let cfg = config::load(env::args().nth(1).unwrap().as_ref());
let server = IrcServer::from_config(cfg.irc_config()).unwrap();
server.identify().unwrap();
let reader = server.clone();
reader.for_each_incoming(|message| {
match message.command {
Command::PRIVMSG(ref _target, ref msg) => {
let badwords: Vec<&str> = vec![
"",
"companieshouse.gov.uk",
"christel sold",
"freenode to private",
"snoonet",
"nigger",
"chan freenode",
"supernets.org",
"flooding challenge",
"details!!",
];
if let Some(from) = message.source_nickname() {
if let Some(inchan) = message.response_target() {
for word in badwords {
if msg.to_lowercase().contains(word) {
server.send_mode(
inchan,
&[
Mode::Plus(
ChannelMode::Ban,
Some(from.to_owned())
)
]
);
server.send_kick(
inchan,
from,
"PM gchristensen to dispute this"
);
println!("Banning: {:?}, {:?}", from, msg);
}
}
}
}
}
_ => {
print!("{:?}\n", message.command);
},
}
}).unwrap();
}