diff --git a/src/clients/irc.mjs b/src/clients/irc.mjs index d8e4fc9..746593d 100644 --- a/src/clients/irc.mjs +++ b/src/clients/irc.mjs @@ -120,7 +120,8 @@ export class irc extends EventEmitter { join: chan => this.join(chan), part: (chan, msg) => this.part(chan, msg), whois: user => this.whois(user), - write: msg => this.send(msg) + write: msg => this.send(msg), + socket: this.socket }; } join(channel) { diff --git a/src/inc/trigger/sandbox.mjs b/src/inc/trigger/sandbox.mjs index 49f8b12..d418490 100644 --- a/src/inc/trigger/sandbox.mjs +++ b/src/inc/trigger/sandbox.mjs @@ -6,13 +6,15 @@ import rp from "request-promise"; import stringify from "stringify-object"; let _contexts = new Map(); -sql.any("select data from useless where trigger = 'sandbox_js'") +/*sql.any("select data from useless where trigger = 'sandbox_js'") .then(rows => { eval("_contexts = new Map([..."+JSON.parse(rows[0].data)+"])"); - }) - .catch(err => { - console.log("nichts vorhanden lol", err); - }); + }).catch(err => console.log("nichts vorhanden lol", err));*/ + +sql.any("select sandbox from nxy_users where sandbox != NULL") + .then(rows => { + eval("_contexts.set(rows[0].prefix, "+JSON.parse(rows[0].data)+");"); + }).catch(err => console.log("nichts vorhanden lol", err)); export default bot => { bot._trigger.set("sandbox_js", new bot.trigger({ @@ -20,13 +22,13 @@ export default bot => { set: "uwe", f: e => { const args = e.message.trim().substring(4); - if (!_contexts.has(`${e.network}.${e.channel}.${e.user.nick}`)) - _contexts.set(`${e.network}.${e.channel}.${e.user.nick}`, vm.createContext({ })); + if (!_contexts.has(e.user.prefix)) + _contexts.set(e.user.prefix, vm.createContext({ })); if (args.match(/^reset$/)) { - _contexts.set(`${e.network}.${e.channel}.${e.user.nick}`, vm.createContext({ })); + _contexts.set(e.user.prefix, vm.createContext({ })); return e.reply("Sandbox resetted!"); } - let context = vm.createContext(_contexts.get(`${e.network}.${e.channel}.${e.user.nick}`)); + let context = vm.createContext(_contexts.get(e.user.prefix)); try { let output = vm.runInContext(args, context, { timeout: 2000 }); if (typeof output !== undefined && output) { @@ -34,12 +36,18 @@ export default bot => { if (output.length > maxoutput) return e.reply(`holy fuck, Ausgabe wäre viel zu lang! (${output.length} Zeichen :DDDDDD)`); else { - _contexts.set(`${e.network}.${e.channel}.${e.user.nick}`, context); + _contexts.set(e.user.prefix, context); let tmp = JSON.stringify(stringify([..._contexts]) .replace(/\n/g, "") .replace(/\t/g, "") .split("[native code]").join("")); - sql.any("update useless set data = $1 where trigger = 'sandbox_js';", [tmp]) + //sql.any("update useless set data = $1 where trigger = 'sandbox_js';", [tmp]) + //insert into nxy_users (nick, ${mode}) values (lower($1), $2) on conflict (nick) do update set ${mode} = excluded.${mode} + sql.any("insert into nxy_users (nick, prefix, sandbox) values (lower($1), $3, $2) on conflict (prefix) do update set sandbox = $2, nick = lower($1)", [ + (e.type === "tg"?e.user.username || e.user.nick:e.user.nick), + tmp, + e.user.prefix + ]) .then(() => { e.reply(output); }) diff --git a/src/inc/trigger/useless_nxy.mjs b/src/inc/trigger/useless_nxy.mjs index 8f6e220..39da3de 100644 --- a/src/inc/trigger/useless_nxy.mjs +++ b/src/inc/trigger/useless_nxy.mjs @@ -204,7 +204,8 @@ export default bot => { if(e.args.length > 0 && e.args[0].charAt(0) === "=") { let tmp = e.args[0].slice(1); sql.any( - `insert into nxy_users (nick, ${mode}) values (lower($1), $2) on conflict (nick) do update set ${mode} = excluded.${mode}`, [ + `insert into nxy_users (prefix, nick, ${mode}) values ($1, lower($2), $3) on conflict (prefix) do update set ${mode} = excluded.${mode}, nick = $2`, [ + e.user.prefix, (e.type === "tg"?e.user.username || e.user.nick:e.user.nick), tmp ]) diff --git a/src/inc/trigger/useless_uwe.mjs b/src/inc/trigger/useless_uwe.mjs index 13b8f19..fecaff8 100644 --- a/src/inc/trigger/useless_uwe.mjs +++ b/src/inc/trigger/useless_uwe.mjs @@ -355,4 +355,25 @@ export default bot => { }); } })); + + bot._trigger.set("test", new bot.trigger({ + call: /^\.version/i, + set: "uwe", + clients: ["irc"], + f: e => { + e.socket.once("data", res => { + let verstring; + try { + verstring = res.match(/\u0001VERSION (.*?)\u0001/)[1]; + } + catch(err) { + verstring = false; + }; + + if(verstring) + e.reply(`${e.user.nick}: ${verstring}`); + }); + e.write(`privmsg ${e.args[0] || e.user.nick} :\u0001VERSION\u0001`); + } + })); }; \ No newline at end of file