const Plugin = require('../plugin') const request = require('request') let cache = {} module.exports = new Plugin({ name: 'DiscordBots Bot Info', author: 'Juby210#0577', description: 'Show Top.gg bot info on bot profile', color: 'aqua', load: () => { findModule("dispatch").subscribe("USER_PROFILE_MODAL_OPEN", module.exports.check) }, unload: () => { findModule("dispatch").unsubscribe("USER_PROFILE_MODAL_OPEN", module.exports.check) }, check: arg => { let el = $("."+findModule(m => m.modal && m.inner && !m.close).modal.split(" ")[0]) if(el.length == 0) { setTimeout(() => module.exports.check(arg), 100) return; } // why { findModuleByDisplayName } = EDApi doesn't work on newest ED.. if(EDApi.findModuleByProps("getUser", "getUsers").getUser(arg.userId).bot) module.exports.listener(el, arg.userId) }, listener: (el, id) => { if(cache[id] && cache[id].d + (60 * 60 * 1000) >= Date.now()) { module.exports.parse(id, el, 200, cache[id].body) } else { request(`https://top.gg/bot/${id}`, (err, res, body) => { if(err) return console.error(err) module.exports.parse(id, el, res.statusCode, body) if(res.statusCode == 200) cache[id] = { body, d: Date.now() } }) } }, parse: (id, el, code, body) => { let hc = EDApi.findModuleByProps("header", "botTag", "listAvatar") let sc = findModule("scrollerWrap") let scroller = $(el).find("."+sc.scroller.split(" ")[0]) let di = $(scroller).find("."+hc.userInfoSection.split(" ")[0]).clone() $(di).find("."+hc.userInfoSectionHeader.split(" ")[0]).html("Bot Info") let m = $(di).find("textarea").parent().attr("class", findModule("markup").markup) $(m).html("Bot not found on top.gg") $(scroller).append(di) if(code == 200) { let r = $(body) let web = $(r).find("#websitelink").attr("href") web = web ? `${web}` : "-" let github = $(r).find("#github").attr("href") github = github ? `${github}` : "-" let owners = [] $(r).find("#createdby").find("span").each((i, name) => { owners.push(`${$(name).text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")}`) }) let tags = [] $(r).find(".atag").each((i, name) => { tags.push($(name).text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")) }) let n = " ".repeat(15) let serversshards = "" if($(r).find(".serversshards .votebutton").length == 1) { serversshards = `${n}Servers: ${$(r).find(".serversshards .votebutton").first().text().replace(/ /g, "").split("\n")[1]}` } else if ($(r).find(".serversshards .votebutton").length > 1) { serversshards = `${n}Servers: ${$(r).find(".serversshards .votebutton").first().text().replace(/ /g, "").split("\n")[1]}` serversshards += `${n}Shards: ${$(r).find(".serversshards .votebutton").last().text().replace(/ /g, "").split("\n")[1].split(" ")[0]}` } $(m).html(`Description: ${$(r).find(".bot-description").text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")} [Invite]\nWebsite: ${web}\nGithub: ${github} Prefix: ${$(r).find("#prefix").first().text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")} Lib: ${$(r).find("#libclick").text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")}\nOwners: ${owners.join(", ")} Tags: ${tags.join(", ")}\nVotes: ${$(r).find("#points").text().replace(/ /g, "").replace(new RegExp("\n", "g"), "")}${serversshards} [Show on top.gg]`) } } });