260 lines
7.6 KiB
JavaScript
260 lines
7.6 KiB
JavaScript
|
"use strict";
|
|||
|
|
|||
|
const Irc = require("irc");
|
|||
|
const Mysql = require("mysql");
|
|||
|
|
|||
|
let db = Mysql.createPool({
|
|||
|
host: "localhost",
|
|||
|
user: "laravel",
|
|||
|
password: "mvYx-.c6{m98rwKE",
|
|||
|
database: "laravel",
|
|||
|
timezone: "utc"
|
|||
|
});
|
|||
|
|
|||
|
let irc = {};
|
|||
|
|
|||
|
/*Irc.Client.prototype._connectionHandler = function() {
|
|||
|
if (this.opt.webirc.ip && this.opt.webirc.pass && this.opt.webirc.host) {
|
|||
|
this.send('WEBIRC', this.opt.webirc.pass, this.opt.userName, this.opt.webirc.host, this.opt.webirc.ip);
|
|||
|
}
|
|||
|
if (this.opt.password) {
|
|||
|
this.send('PASS', this.opt.password);
|
|||
|
}
|
|||
|
if (this.opt.debug)
|
|||
|
console.log('Sending irc NICK/USER');
|
|||
|
this.send('NICK', this.opt.nick);
|
|||
|
this.nick = this.opt.nick;
|
|||
|
this._updateMaxLineLength();
|
|||
|
this.send('USER', this.opt.userName, 'realnetzprotokolladresse.w0bm.com', 'realnetzprotokolladresse.w0bm.com', this.opt.realName);
|
|||
|
this.emit('connect');
|
|||
|
};*/
|
|||
|
|
|||
|
//irc.client = new Irc.Client('irc.rizon.so', 'w0bm', {
|
|||
|
//irc.client = new Irc.Client('irc.n0xy.net', 'w0bm', {
|
|||
|
irc.client = new Irc.Client('znc.gottz.de', 'w0bm', {
|
|||
|
// channels: ["#gz", "#w0bm"],
|
|||
|
port: 6667,
|
|||
|
secure: false,
|
|||
|
retryCount: 12000,
|
|||
|
retryDelay: 3000,
|
|||
|
userName: "Abdullah",
|
|||
|
realName: "Fritz",
|
|||
|
debug: false,
|
|||
|
selfSigned: false,
|
|||
|
debugRaw: false,
|
|||
|
autoConnect: false,
|
|||
|
password: "w0bm/n0xy:Roquaib7jae9miey3aey"
|
|||
|
});
|
|||
|
|
|||
|
const repl = require("repl").start("> ");
|
|||
|
repl.context.i = irc;
|
|||
|
repl.context.c = irc.client;
|
|||
|
repl.context.w = (msg) => irc.client.say("#w0bm", msg);
|
|||
|
repl.context.s = (cmd, msg) => irc.client.send(cmd, msg);
|
|||
|
|
|||
|
Object.defineProperty(repl.context, "q", {get:process.exit});
|
|||
|
|
|||
|
let needJoin = false;
|
|||
|
irc.client.addListener("registered", () => {
|
|||
|
console.log("registered…");
|
|||
|
const c = irc.client;
|
|||
|
//c.say("NickServ", "IDENTIFY dI0k2k7PH");
|
|||
|
//c.say("NickServ", "IDENTIFY jae2Loax");
|
|||
|
//c.say("HostServ", "ON");
|
|||
|
//needJoin = true;
|
|||
|
});
|
|||
|
irc.client.addListener("notice", (from, to, text) => {
|
|||
|
if (needJoin && from == "NickServ" && text.indexOf("Password accepted") != -1) {
|
|||
|
needJoin = false;
|
|||
|
const c = irc.client;
|
|||
|
//c.join("#w0bm");
|
|||
|
//c.join("#gz");
|
|||
|
}
|
|||
|
});
|
|||
|
process.nextTick(()=>irc.client.connect());
|
|||
|
|
|||
|
const handleChatCommands = require("./chatCommands")(irc, db);
|
|||
|
|
|||
|
const shiftRegex = /^(\.?\w+:?)\s+(.+)/;
|
|||
|
const w0bmregex = /(?:[^\/]|^|\/\/)w0bm\.com\/(?:(?:b\/)?\w+\/)?([^ '\/@`´]+\.(webm)|\d+)/i;
|
|||
|
|
|||
|
const capsmsg = [
|
|||
|
"Captain capslock did not approve this!",
|
|||
|
"CAPS",
|
|||
|
"caps lock. unleash the mother fucking fury",
|
|||
|
"DON'T YOU TYPE AT ME IN THAT TONE OF VOICE.",
|
|||
|
"Suddenly, CAPS LOCK",
|
|||
|
"OH, so you wanna argue? BRING IT. I got my CAPS LOCK ON",
|
|||
|
"WELCOME TO THE INTERNET"
|
|||
|
];
|
|||
|
|
|||
|
irc.client.addListener("error", message => console.log("error: ", message));
|
|||
|
|
|||
|
irc.client.on("raw", raw => {
|
|||
|
if (irc.client.opt.debugRaw) console.log(raw);
|
|||
|
/*if (raw.command == "rpl_whoischannels") {
|
|||
|
let chan = raw.args[2].split(" ").filter(c => /#w0bm$/.test(c));
|
|||
|
if (!chan || !chan[0] || chan[0].split("#")) return;
|
|||
|
let mode = chan[0].split("#")[0];
|
|||
|
irc.client.chans["#w0bm"].users[raw.args[1]] = mode;
|
|||
|
}*/
|
|||
|
});
|
|||
|
|
|||
|
/*irc.client.on("-mode", (chan, nick, mode, user, message) => {
|
|||
|
if (typeof user != "undefined")
|
|||
|
irc.client.send("WHOIS", user);
|
|||
|
})
|
|||
|
irc.client.on("+mode", (chan, nick, mode, user, message) => {
|
|||
|
if (typeof user != "undefined")
|
|||
|
irc.client.send("WHOIS", user);
|
|||
|
})*/
|
|||
|
|
|||
|
irc.client.addListener("message", (from, to, message, raw) => {
|
|||
|
const client = irc.client;
|
|||
|
// if (client.opt.debug) console.log("raw:", raw);
|
|||
|
let pm;
|
|||
|
if (pm = !/^#/.test(to)) {
|
|||
|
if (client.opt.debug) console.log("setting to from:", to, "to:", from, "cause its a PM");
|
|||
|
to = from;
|
|||
|
}
|
|||
|
if (client.opt.debug) console.log("from:", from, "to:", to, "message:", message);
|
|||
|
if (shiftRegex.test(message)) {
|
|||
|
let cmd = message.match(shiftRegex);
|
|||
|
let args = cmd[2].trim();
|
|||
|
cmd = cmd[1];
|
|||
|
|
|||
|
if (handleChatCommands({
|
|||
|
from: from,
|
|||
|
to: to,
|
|||
|
message: message,
|
|||
|
cmd: cmd,
|
|||
|
args: args
|
|||
|
})) {
|
|||
|
//console.log("cmd:", cmd, "arg:", arg);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*if (/w0bm\.com\/\d+/.test(message)) {
|
|||
|
client.say(to, "durch Aufruf des Links: "+(message.match(/(w0bm\.com\/\d+)/)[0])+" machen Sie sich strafbar!");
|
|||
|
return;
|
|||
|
}*/
|
|||
|
|
|||
|
if (/pr0gramm\.com/.test(message) && to == "#w0bm") {
|
|||
|
client.say(to, pr0text[Math.random()*pr0text.length|0]);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
/* if (message.toUpperCase() == message && message.trim().split("").filter(c=>/[A-Z]/.test(c)).length > 5) {
|
|||
|
client.say(to, capsmsg[Math.random()*capsmsg.length|0]);
|
|||
|
}
|
|||
|
*/
|
|||
|
|
|||
|
if (w0bmregex.test(message)) {
|
|||
|
var link = message.match(w0bmregex);
|
|||
|
if (link) {
|
|||
|
var id = link[1];
|
|||
|
if (id.length > 20) {
|
|||
|
client.say(to, "fuck you");
|
|||
|
return;
|
|||
|
}
|
|||
|
var webm = link[2];
|
|||
|
db.getConnection((err, con) => {
|
|||
|
if (err) {
|
|||
|
client.say(to, "sorry.. there seems to be a database problem right now D:");
|
|||
|
con.release();
|
|||
|
return;
|
|||
|
}
|
|||
|
con.query(
|
|||
|
"select v.id, v.deleted_at, u.username, c.name as category, v.interpret, v.songtitle, v.imgsource,"+
|
|||
|
" (select 1 from taggable_taggables t where t.taggable_id = v.id and t.tag_id = 1) as sfw,"+
|
|||
|
" (select count(cm.id) from comments cm where cm.video_id = v.id and cm.deleted_at is NULL) as comments"+
|
|||
|
" from videos v, users u, categories c where v.user_id = u.id and v.category_id = c.id"+
|
|||
|
" and " + (webm ? "v.file" : "v.id") + " = '" + id + "'", (err, rows, fields) => {
|
|||
|
if (err) {
|
|||
|
client.say(to, "sorry.. there seems to be an sql query problem D:");
|
|||
|
client.say(to, "" + err);
|
|||
|
con.release();
|
|||
|
return;
|
|||
|
}
|
|||
|
var vid = rows[0];
|
|||
|
if (!vid) {
|
|||
|
client.say(to, from + ": konnte kein video finden D:");
|
|||
|
con.release();
|
|||
|
return;
|
|||
|
}
|
|||
|
var txt = [];
|
|||
|
if (vid.deleted_at) txt.push("\x02gelöscht\x0f");
|
|||
|
if (webm) txt.push("Link: \x02https://w0bm.com/" + vid.id + "\x0f");
|
|||
|
txt.push(vid["sfw"] ? "\x039SFW\x0f" : "\x034NSFW\x0f");
|
|||
|
["interpret", "songtitle", "category", "username", "comments"].forEach((v, i) => {
|
|||
|
if (vid[v]) {
|
|||
|
txt.push(
|
|||
|
["Artist", "Title", "Category", "Uploader", "Comments"][i] + ": "
|
|||
|
+"\x02" + vid[v] + "\x0f"
|
|||
|
);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
client.say(to, txt.join(" | "));
|
|||
|
con.release();
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (~haitext.indexOf(message.toLowerCase())) {
|
|||
|
client.say(to, haitext[Math.random()*haitext.length|0] + " " + from + "!");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (/^!d$/.test(message)) {
|
|||
|
client.say(to, from + ": the magic dice shows " + ((Math.random()*6|0)+1) + " eyes.");
|
|||
|
}
|
|||
|
|
|||
|
if (/^a+[yi][yiou]*$/.test(message)) {
|
|||
|
client.say(to, "ayy lmao");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (/.+\?\?$/.test(message)) {
|
|||
|
let ye = Math.random() * 2 | 0;
|
|||
|
client.say(to, "[" + (ye?"x":" ") + "] ja [" + (ye?" ":"x") + "] nein | " + message);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (~[".guuchan", ".vizon", ".lottery"].indexOf(message)) {
|
|||
|
let values = new Array(29).fill().map((v,i)=>1+i);
|
|||
|
let choices = new Array(6).fill().map(()=>values.splice(Math.random()*values.length|0,1)).sort((x,y)=>x-y).join(" ");
|
|||
|
client.say(to, "/notice guuchan !bet " + choices);
|
|||
|
return;
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
const haitext = ["ohaio", "ohayou", "ohayo", "ohaiou", "ohai", "nabend", "morgen", "guten tag", "hallo", "hi", "hai", "hey", "moin", "hellau", "hello", "hallu", "yo", "servus", "tag", "tach", "alaaf", "alaf", "As-Salamu 'alaikum wa Rahmatullahi wa Barakatuhu"];
|
|||
|
|
|||
|
|
|||
|
const pr0text = [
|
|||
|
"pr0gramm.com existiert nicht!",
|
|||
|
"endlich oc von deiner fotze?",
|
|||
|
"Pfui Daibel",
|
|||
|
"kommandozeile war vorher da",
|
|||
|
"keiner von uns",
|
|||
|
"Falsches Grau",
|
|||
|
"das reicht uns nicht",
|
|||
|
"Zapalot nochmal!",
|
|||
|
"meinten sie reddit, 9gag oder fagbook?",
|
|||
|
"lustig weil pr0gramm",
|
|||
|
"lustig weil fett",
|
|||
|
"marina die huuure",
|
|||
|
"har har har kefer",
|
|||
|
"Ach du scheiße. Da drückste Minus.",
|
|||
|
"0815 wie fick",
|
|||
|
"stumpf ist trumpf",
|
|||
|
"f man weiß ja nie",
|
|||
|
"lass das nicht die repost polizei sehen!"
|
|||
|
];
|
|||
|
|