forked from the-distro/ofborg
check in the ban bot
This commit is contained in:
parent
bc5c1ba69b
commit
4a84900dee
91
ircbot/src/bin/ban.rs
Normal file
91
ircbot/src/bin/ban.rs
Normal 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();
|
||||
}
|
Loading…
Reference in a new issue