diff --git a/src/clients/irc.mjs b/src/clients/irc.mjs index ca83c2e..f418b0e 100644 --- a/src/clients/irc.mjs +++ b/src/clients/irc.mjs @@ -5,9 +5,11 @@ import tls from "tls"; import EventEmitter from "events"; const colors = { - red: "\x0304$1\x0304", - blue: "\x0312$1\x0312", - yellow: "\x0308$1\x0308" + red: "04", + blue: "12", + yellow: "08", + green: "03", + brown: "05" }; const msgmodes = { normal: "PRIVMSG {recipient} :{msg}", @@ -17,7 +19,7 @@ const msgmodes = { const replaceColor = (match, color, text) => { if (colors.hasOwnProperty(color)) - return colors[color].replace("\$1", text); + return `\x03${colors[color]}${text}\x0F`; return text; }; @@ -45,7 +47,6 @@ export class irc extends EventEmitter { this.server = { set: this.set, motd: "", - debug: false, me: {}, channel: [], user: new Map() @@ -80,16 +81,14 @@ export class irc extends EventEmitter { this.send( msgmodes[mode].replace("{recipient}", recipient).replace("{msg}", e) ); }); } - parse(data, [a, ...b] = data.split(/ +:/)) { - let tmp = a.split(" ").concat(b); - return data.charAt(0) === ":" ? { - prefix: tmp.shift(), - command: tmp.shift(), - params: tmp - } : { - prefix: null, - command: tmp.shift(), - params: tmp + parse(data, [a, ...b] = data.split(/ +:/), tmp = a.split(" ").concat(b)) { + let prefix = data.charAt(0) === ":" ? tmp.shift() : null + , command = tmp.shift() + , params = command.toLowerCase() === "privmsg" ? [ tmp.shift(), tmp.join(" :") ] : tmp; + return { + prefix: prefix, + command: command, + params: params }; } reply(tmp) { @@ -100,9 +99,13 @@ export class irc extends EventEmitter { channelid: tmp.params[0], user: Object.assign(this.parsePrefix(tmp.prefix), { account: this.server.user.geti(this.parsePrefix(tmp.prefix).nick).account, - prefix: tmp.prefix.charAt(0) === ":" ? tmp.prefix.substring(1) : tmp.prefix + prefix: tmp.prefix.charAt(0) === ":" ? tmp.prefix.substring(1) : tmp.prefix, + level: getLevel(this.network, Object.assign(this.parsePrefix(tmp.prefix), { + account: this.server.user.geti(this.parsePrefix(tmp.prefix).nick).account, + prefix: tmp.prefix.charAt(0) === ":" ? tmp.prefix.substring(1) : tmp.prefix + })) }), - message: tmp.params[1], + message: tmp.params[1].replace(/\u0002/, ""), time: ~~(Date.now() / 1000), raw: tmp, reply: msg => this.sendmsg("normal", tmp.params[0], this.format(""+msg)), @@ -128,8 +131,8 @@ export class irc extends EventEmitter { whois(user, force = false) { user = user.toLowerCase(); let tmpuser = {}; - if(this.server.user.hasi(user) && !force) { - tmpuser = this.server.user.geti(user); + if(this.server.user.has(user) && !force) { + tmpuser = this.server.user.get(user); if(tmpuser.cached >= ~~(Date.now() / 1000) - this._recachetime) return; } @@ -167,21 +170,3 @@ export class irc extends EventEmitter { ; } } - -Map.prototype.hasi = function(val) { - for (let [key] of this) - if(key.toLowerCase() === val.toLowerCase()) - return true; - return false; -}; -Map.prototype.geti = function(val) { - for (let [key, value] of this) - if(key.toLowerCase() === val.toLowerCase()) - return value; - return false; -}; -Map.prototype.deli = function(val) { - for (let [key] of this) - if(key.toLowerCase() === val.toLowerCase()) - this.delete(key); -}; diff --git a/src/clients/irc/msg.mjs b/src/clients/irc/msg.mjs index 8fcd0ca..4ca3efb 100644 --- a/src/clients/irc/msg.mjs +++ b/src/clients/irc/msg.mjs @@ -1,6 +1,11 @@ export default client => { client._cmd.set("PRIVMSG", function (msg) { // privmsg - this.emit("data", msg.params[1] === "\u0001VERSION\u0001" ? ["ctcp:version", this.reply(msg)] : ["message", this.reply(msg)]); + if(msg.params[1] === "\u0001VERSION\u0001") + return this.emit("data", ["ctcp:version", this.reply(msg)]); + else if(msg.params[1].match(/^\u0001PING .*\u0001/i)) + return this.emit("data", ["ctcp:ping", this.reply(msg)]); + else + this.emit("data", ["message", this.reply(msg)]); }.bind(client)); client._cmd.set("NOTICE", function (msg) { // notice diff --git a/src/clients/irc/whois.mjs b/src/clients/irc/whois.mjs index 1c07dea..5008b88 100644 --- a/src/clients/irc/whois.mjs +++ b/src/clients/irc/whois.mjs @@ -75,21 +75,3 @@ export default client => { this.server.user.set(msg.params[1], tmpuser); }.bind(client)); }; - -Map.prototype.hasi = function (val) { - for (let [key] of this) - if (key.toLowerCase() === val.toLowerCase()) - return true; - return false; -}; -Map.prototype.geti = function (val) { - for (let [key, value] of this) - if (key.toLowerCase() === val.toLowerCase()) - return value; - return false; -}; -Map.prototype.deli = function (val) { - for (let [key] of this) - if (key.toLowerCase() === val.toLowerCase()) - this.delete(key); -}; diff --git a/src/clients/tg.mjs b/src/clients/tg.mjs index 0b3397e..f070e1c 100644 --- a/src/clients/tg.mjs +++ b/src/clients/tg.mjs @@ -79,7 +79,7 @@ export class tg extends EventEmitter { method: "POST", body: { chat_id: chatid, - text: msg, + text: msg.split("\n").length > 1 ? `${msg}` : msg, parse_mode: "HTML" } }; @@ -103,14 +103,20 @@ export class tg extends EventEmitter { prefix: `${tmp.from.username}!${tmp.from.id}`, nick: tmp.from.first_name, username: tmp.from.username, - account: tmp.from.id.toString() + account: tmp.from.id.toString(), + level: getLevel("Telegram", { + prefix: `${tmp.from.username}!${tmp.from.id}`, + nick: tmp.from.first_name, + username: tmp.from.username, + account: tmp.from.id.toString() + }) }, self: this.server, message: tmp.text, time: tmp.date, raw: tmp, reply: msg => this.send(tmp.chat.id, this.format(msg), tmp.message_id), - replyAction: msg => this.send(tmp.chat.id, this.format(`f0ck ${msg}`), tmp.message_id), + replyAction: msg => this.send(tmp.chat.id, this.format(`Uwe ${msg}`), tmp.message_id), replyNotice: msg => this.send(tmp.chat.id, this.format(msg), tmp.message_id), _user: this.server.user }; @@ -125,21 +131,3 @@ export class tg extends EventEmitter { ; } } - -Map.prototype.hasi = function(val) { - for (let [key] of this) - if(key.toLowerCase() === val.toLowerCase()) - return true; - return false; -}; -Map.prototype.geti = function(val) { - for (let [key, value] of this) - if(key.toLowerCase() === val.toLowerCase()) - return value; - return false; -}; -Map.prototype.deli = function(val) { - for (let [key] of this) - if(key.toLowerCase() === val.toLowerCase()) - this.delete(key); -};