From fe936b8cd6a2190baf83ba9f8270ab0bcbc9a956 Mon Sep 17 00:00:00 2001 From: Flummi Date: Mon, 19 Aug 2019 19:53:55 +0000 Subject: [PATCH] asyncify --- src/inc/trigger/chatbot.mjs | 12 +++-- src/inc/trigger/core.mjs | 70 ----------------------------- src/inc/trigger/irpg.mjs | 86 +++++++++++++++++------------------- src/inc/trigger/mcmaniac.mjs | 19 +++----- src/inc/trigger/urban.mjs | 19 ++++---- 5 files changed, 60 insertions(+), 146 deletions(-) diff --git a/src/inc/trigger/chatbot.mjs b/src/inc/trigger/chatbot.mjs index 9378baf..50eff8f 100644 --- a/src/inc/trigger/chatbot.mjs +++ b/src/inc/trigger/chatbot.mjs @@ -5,15 +5,13 @@ export default async bot => { name: "chatbot", call: /^(?![!./[])(.*uw(e|i).*)/i, set: "uwe", - f: e => { - const chat = e.message + f: async e => { + const res = await cleverbot.ask(e.message .replace(/uw(e|i)/gi, "") .split("?") - .join(""); - cleverbot.ask(chat) - .then(res => { - e.reply(res.response); - }).catch(console.error); + .join("") + ); + e.reply(res.response); } }] }; diff --git a/src/inc/trigger/core.mjs b/src/inc/trigger/core.mjs index 14dea72..fd9082a 100644 --- a/src/inc/trigger/core.mjs +++ b/src/inc/trigger/core.mjs @@ -1,6 +1,3 @@ -import sql from "../sql"; -import { getLevel } from "../admin"; - export default async bot => { return [{ @@ -40,72 +37,5 @@ export default async bot => { e.reply(`changed nick to ${e.args[0]}`); } } - }, { - name: "level", - call: /^\!level .*/i, - level: 0, - active: false, - clients: ["irc"], - f: e => { - if(e.self.me.nickname.toLowerCase() === e.args.shift().toLowerCase()) { - //const args = e.message.split(' '); - e.message = e.args.join(""); - console.log(e.message); - if (Number.isInteger(parseInt(e.args[2]))) { - if (e.user.level.level >= 100) { - const name = e.args[1].replace('@', ''); - const level = Math.min(Math.max(0, e.args[2]), 100); - - //if (name.toLowerCase() != bot.me.toLowerCase()) { - if (e._user.hasi(name)) { - const user = e._user.geti(name); - if (user.registered) { // check if user is registered - const userlevel = getLevel(e.network, user).level; - if(userlevel > 0) { // check if user is admin - if(level <= 0) { - sql.any("delete from admins where account = lower(?) and network = lower(?)", [user.account, e.network]) - .then(rows => { - loadAdmins(); - return e.reply(`deleted user ${user.nickname}`); - }).catch(err => console.log("delete", err)) - } - else if(level !== userlevel) { - sql.any("update admins set level = ? where account = ? and network = ?", [level, user.account, e.network]) - .then(rows => { - loadAdmins(); - return e.reply(`changed user [b]${user.nickname}[/b] (${userlevel} -> ${level})`); - }).catch(err => console.log("update", err)) - } - else - return e.reply("no changes"); - } - else { - sql.any("insert into admins (prefix, account, level, network) values (lower(?), lower(?), ?, lower(?))", [user.prefix, user.account, level, e.network]) - .then(rows => { - loadAdmins(); - return e.reply(`added new user [b]${user.nickname}[/b] with level ${level}`); - }).catch(err => console.log("add", err)) - } - } - else - return e.reply(`user [b]${name}[/b] isn't registered`); - } - else - return e.reply(`user not found`); - } - else - return e.reply("no permission, min level 100 required"); - } - else { - let user = (!(user = e.message.match(/^\!level(?: +@(.*))?/i)[1])) ? e.user.nick : user.trim(); - if(e._user.hasi(user)) { - const level = getLevel(e.network, e._user.geti(user)); - e.reply(`level from ${user}: ${level.level} (${level.verified ? "verified" : "unverified"})`); - } - else - e.reply(`user not found`); - } - } - } }] }; diff --git a/src/inc/trigger/irpg.mjs b/src/inc/trigger/irpg.mjs index 59c371d..a859aa7 100644 --- a/src/inc/trigger/irpg.mjs +++ b/src/inc/trigger/irpg.mjs @@ -6,51 +6,47 @@ export default async bot => { name: "irpg", call: /^\.irpg/i, set: "uwe", - f: e => { - fetch("https://f0ck.me/irpg/db.php") - .then(res => res.text()) - .then(res => { - e.args[0] = e.args[0] || e.user.nick; - let players = new Map() - , alias = {}; - res - .split("\n").join`` - .match(/\(.*?)\<\/tr\>/gsi) - .map((l, i) => `${i}${l}`.match(/\(.*?)\<\/td\>/gsi)) - .map(l => l?l.map(m => m - .replace("", "") - .replace("", "") - .replace("", "") - ):false) - .splice(1) - .forEach(p => { // 6 archangel!archangel@pomf.space - const nick = p[6].split("!")[0].toLowerCase(); - players.set(p[1].toLowerCase(), { - rang: parseInt(p[0]), - name: p[1], - level: parseInt(p[2]), - class: p[4], - ttl: p[5], - online: p[7] === "Yes", - nick: nick, - itemsum: parseInt(p[31]) - }); - if(nick !== p[1].toLowerCase()) - alias[nick] = p[1].toLowerCase(); - }); - e.args[0] = (e.args[0].toLowerCase() in alias)?alias[e.args[0].toLowerCase()]:e.args[0]; - let p = players.has(e.args[0].toLowerCase())?players.get(e.args[0].toLowerCase()):false; - let tmp = e.args[0].match(/#\d+/); - if(tmp) { - tmp = parseInt(tmp[0].slice(1)) - 1; - if(tmp >= 0 && tmp <= players.size - 1) - p = [...players.entries()][tmp][1]; - } - if(!p) - return e.reply("user / rang doesn't exist. D:"); - e.reply(`(${p.rang} / ${players.size}) [b]${p.name}[/b], the [b]${p.class}[/b] is ${p.online?"[color=green]online[/color]":"[color=red]offline[/color]"}: level: ${p.level}, next level in ${p.ttl}. Itemsum: ${p.itemsum}`); - }) - .catch(err => console.log(err)); + f: async e => { + const res = await (await fetch("https://f0ck.me/irpg/db.php")).text(); + e.args[0] = e.args[0] || e.user.nick; + let players = new Map() + , alias = {}; + res + .split("\n").join`` + .match(/\(.*?)\<\/tr\>/gsi) + .map((l, i) => `${i}${l}`.match(/\(.*?)\<\/td\>/gsi)) + .map(l => l?l.map(m => m + .replace("", "") + .replace("", "") + .replace("", "") + ):false) + .splice(1) + .forEach(p => { // 6 archangel!archangel@pomf.space + const nick = p[6].split("!")[0].toLowerCase(); + players.set(p[1].toLowerCase(), { + rang: parseInt(p[0]), + name: p[1], + level: parseInt(p[2]), + class: p[4], + ttl: p[5], + online: p[7] === "Yes", + nick: nick, + itemsum: parseInt(p[31]) + }); + if(nick !== p[1].toLowerCase()) + alias[nick] = p[1].toLowerCase(); + }); + e.args[0] = (e.args[0].toLowerCase() in alias)?alias[e.args[0].toLowerCase()]:e.args[0]; + let p = players.has(e.args[0].toLowerCase())?players.get(e.args[0].toLowerCase()):false; + let tmp = e.args[0].match(/#\d+/); + if(tmp) { + tmp = parseInt(tmp[0].slice(1)) - 1; + if(tmp >= 0 && tmp <= players.size - 1) + p = [...players.entries()][tmp][1]; + } + if(!p) + return e.reply("user / rang doesn't exist. D:"); + e.reply(`(${p.rang} / ${players.size}) [b]${p.name}[/b], the [b]${p.class}[/b] is ${p.online?"[color=green]online[/color]":"[color=red]offline[/color]"}: level: ${p.level}, next level in ${p.ttl}. Itemsum: ${p.itemsum}`); } }]; }; diff --git a/src/inc/trigger/mcmaniac.mjs b/src/inc/trigger/mcmaniac.mjs index 99e4e33..dbd5a8e 100644 --- a/src/inc/trigger/mcmaniac.mjs +++ b/src/inc/trigger/mcmaniac.mjs @@ -18,17 +18,14 @@ export default async bot => { name: "mcmaniac_add", call: /Mc.*iaC/, set: "nxy", - f: e => { - const match = e.message.match(/(Mc\S+iaC?)/)[0]; - sql.any(_query_add, [match]) - .then() - .catch(err => {}); + f: async e => { + await sql.any(_query_add, [e.message.match(/(Mc\S+iaC?)/)[0]]); } }, { name: "mcmaniac_get", call: /^(\.|\/)mcmaniac/i, set: "nxy", - f: e => { + f: async e => { const args = e.message.trim().substring(10); let order = "id asc" , offset @@ -52,13 +49,9 @@ export default async bot => { query = query .split("{order}").join(order) .split("{offset}").join(offset); - sql.any(query) - .then(rows => { - e.reply(`[${rows[0].rank}/${rows[0].total}] ${rows[0].item}`); - }) - .catch(err => { - console.log(err); - }); + + const rows = await sql.any(query); + e.reply(`[${rows[0].rank}/${rows[0].total}] ${rows[0].item}`); } }]; }; diff --git a/src/inc/trigger/urban.mjs b/src/inc/trigger/urban.mjs index ebe5385..db1810c 100644 --- a/src/inc/trigger/urban.mjs +++ b/src/inc/trigger/urban.mjs @@ -12,22 +12,19 @@ export default async bot => { text: "Searches for a term on Urbandict and returns first result", usage: "[b].ud[/b] [i][/i] [i]()[/i]" }, - f: e => { + f: async e => { let index = 1; if(!isNaN(e.args[e.args.length - 1]) && e.args.length > 1) index = parseInt(e.args.pop()); const term = e.args.join(" ").trim().toLowerCase(); - fetch(`${url}?term=${term}`) - .then(res => res.json()) - .then(data => { - if(data.result_type === "no_results") - return e.reply("Term not found"); - if(!data.list[index-1]) - return e.reply("Index not found"); - const res = data.list[index-1]; - e.reply(`[${index}/${data.list.length}] [b]${res.word}[/b]: ${res.definition.replace(/\r\n/g, "")} - ${res.example.replace(/\r\n/g, "")}`); - }).catch(err => console.log(err)); + const data = await (await fetch(`${url}?term=${term}`)).json(); + if(data.result_type === "no_results") + return e.reply("Term not found"); + if(!data.list[index-1]) + return e.reply("Index not found"); + const res = data.list[index-1]; + e.reply(`[${index}/${data.list.length}] [b]${res.word}[/b]: ${res.definition.replace(/\r\n/g, "")} - ${res.example.replace(/\r\n/g, "")}`); } }]; };