irpg overhaul

This commit is contained in:
Flummi
2018-09-11 17:18:04 +02:00
parent 0c5e00716c
commit 91e4f3404a
2 changed files with 72 additions and 25 deletions

View File

@ -1,33 +1,45 @@
import jsdom from "jsdom";
import rp from "request-promise-native";
import fetch from "../fetch";
export default bot => {
bot._trigger.set("irpg", new bot.trigger({
call: /^(\.|\/)irpg/i,
call: /^\.irpg/i,
set: "uwe",
f: e => {
const user = e.args[0] || e.user.nick;
rp("https://irpg.zneb.org/players.php").then(top => {
let prank = 0
, i = 1;
const dom = new jsdom.JSDOM(top);
let playerlist = dom.window.document.querySelectorAll("ol > li");
let player = null;
for(let p of playerlist) {
if (p.innerHTML.includes(`player=${user}">`)) {
prank = i;
player = p;
break;
fetch("https://irpg.zneb.org/db.php")
.then(res => res.text())
.then(res => {
e.args[0] = e.args[0] || e.user.nick;
let players = new Map();
res
.split("\n").join``
.match(/\<tr\>(.*?)\<\/tr\>/gsi)
.map((l, i) => `<td>${i}</td>${l}`.match(/\<td.*?\>(.*?)\<\/td\>/gsi))
.map(l => l?l.map(m => m
.replace("<td>", "")
.replace("<td nowrap>", "")
.replace("</td>", "")
):false)
.splice(1)
.forEach(p => 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"
}));
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];
}
i++;
}
if(player !== null) {
const [, plevel, pclass, puntil] = player.innerHTML.match(/.*, the level (.*?) (.*?)\. Next level in (.*?)\./);
e.reply(`([i]${prank} / ${playerlist.length}[/i]) [b]${user}[/b], the [b]${pclass}[/b]: level: ${plevel}, next level in ${puntil}.`);
}
else
e.reply(`player [b]${user}[/b] was not found`);
});
if(!p)
return e.reply("user / rang doesn't exist. D:");
e.reply(`(${p.rang} / ${players.size}) [b]${p.name}[/b], [b]${p.class}[/b]: level: ${p.level}, next level in ${p.ttl}.`);
})
.catch(err => console.log(err));
}
}));
};
};