| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | const CoreClass = require("../core.js");const Discord = require("discord.js");const config = require("config");class DiscordModule extends CoreClass {    constructor() {        super("discord");    }    initialize() {        return new Promise((resolve, reject) => {            this.log("INFO", "Discord initialize");            this.client = new Discord.Client();            this.adminAlertChannelId = config.get(                "apis.discord"            ).loggingChannel;            this.client.on("ready", () => {                this.log("INFO", `Logged in as ${this.client.user.tag}!`);                if (this.getStatus() === "INITIALIZING") {                    resolve();                } else if (this.getStatus() === "RECONNECTING") {                    this.log("INFO", `Discord client reconnected.`);                    this.setStatus("READY");                }            });            this.client.on("disconnect", () => {                this.log("INFO", `Discord client disconnected.`);                if (this.getStatus() === "INITIALIZING") reject();                else {                    this.setStatus("DISCONNECTED");                }            });            this.client.on("reconnecting", () => {                this.log("INFO", `Discord client reconnecting.`);                this.setStatus("RECONNECTING");            });            this.client.on("error", (err) => {                this.log(                    "INFO",                    `Discord client encountered an error: ${err.message}.`                );            });            this.client.login(config.get("apis.discord").token);        });    }    SEND_ADMIN_ALERT_MESSAGE(payload) {        return new Promise((resolve, reject) => {            const channel = this.client.channels.find(                (channel) => channel.id === this.adminAlertChannelId            );            if (channel !== null) {                let richEmbed = new Discord.RichEmbed();                richEmbed.setAuthor(                    "Musare Logger",                    `${config.get("domain")}/favicon-194x194.png`,                    config.get("domain")                );                richEmbed.setColor(payload.color);                richEmbed.setDescription(payload.message);                //richEmbed.setFooter("Footer", "https://musare.com/favicon-194x194.png");                //richEmbed.setImage("https://musare.com/favicon-194x194.png");                //richEmbed.setThumbnail("https://musare.com/favicon-194x194.png");                richEmbed.setTimestamp(new Date());                richEmbed.setTitle("MUSARE ALERT");                richEmbed.setURL(config.get("domain"));                richEmbed.addField("Type:", payload.type, true);                richEmbed.addField(                    "Critical:",                    payload.critical ? "True" : "False",                    true                );                payload.extraFields.forEach((extraField) => {                    richEmbed.addField(                        extraField.name,                        extraField.value,                        extraField.inline                    );                });                channel                    .send(payload.message, { embed: richEmbed })                    .then((message) =>                        resolve({                            status: "success",                            message: `Successfully sent admin alert message: ${message}`,                        })                    )                    .catch(() =>                        reject(new Error("Couldn't send admin alert message"))                    );            } else {                reject(new Error("Channel was not found"));            }            // if (true) {            //     resolve({});            // } else {            //     reject(new Error("Nothing changed."));            // }        });    }}module.exports = new DiscordModule();
 |