| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- const coreClass = require("../core");
 
- const EventEmitter = require('events');
 
- const Discord = require("discord.js");
 
- const config = require("config");
 
- const bus = new EventEmitter();
 
- module.exports = class extends coreClass {
 
- 	initialize() {
 
- 		return new Promise((resolve, reject) => {
 
- 			this.setStage(1);
 
- 			this.client = new Discord.Client();
 
- 			
 
- 			this.connected = false;
 
- 			this.adminAlertChannelId = config.get("apis.discord").loggingChannel;
 
- 			
 
- 			this.client.on("ready", () => {
 
- 				this.logger.info("DISCORD_READY", `Logged in as ${this.client.user.tag}!`);
 
- 				this.connected = true;
 
- 				//bus.emit("discordConnected");
 
- 				resolve();
 
- 				/*messagesToSend.forEach(message => {
 
- 					this.sendAdminAlertMessage(message.message, message.color, message.type, message.critical, message.extraFields);
 
- 				});
 
- 				messagesToSend = [];*/
 
- 			});
 
- 		  
 
- 			this.client.on("disconnect", () => {
 
- 				this.logger.info("DISCORD_DISCONNECT", `Discord client was disconnected.`);
 
- 				this.connected = false;
 
- 			});
 
- 			this.client.on("reconnecting", () => {
 
- 				this.logger.info("DISCORD_RECONNECTING", `Discord client reconnecting.`);
 
- 				this.connected = false;
 
- 			});
 
- 		
 
- 			this.client.on("error", err => {
 
- 				this.logger.info("DISCORD_ERROR", `Discord client encountered an error: ${err.message}.`);
 
- 				reject();
 
- 			});
 
- 			this.client.login(config.get("apis.discord").token);
 
- 		});
 
- 	}
 
- 	async sendAdminAlertMessage(message, color, type, critical, extraFields) {
 
- 		try { await this._validateHook(); await this.connectedHook(); } catch { return; }
 
- 		const channel = this.client.channels.find("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(color);
 
- 			richEmbed.setDescription(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:", type, true);
 
- 			richEmbed.addField("Critical:", critical ? "True" : "False", true);
 
- 			extraFields.forEach(extraField => {
 
- 				richEmbed.addField(
 
- 					extraField.name,
 
- 					extraField.value,
 
- 					extraField.inline
 
- 				);
 
- 			});
 
- 			channel
 
- 			.send(message, { embed: richEmbed })
 
- 			.then(message =>
 
- 				this.logger.success("SEND_ADMIN_ALERT_MESSAGE", `Sent admin alert message: ${message}`)
 
- 			)
 
- 			.catch(() =>
 
- 				this.logger.error("SEND_ADMIN_ALERT_MESSAGE", "Couldn't send admin alert message")
 
- 			);
 
- 		} else {
 
- 			this.logger.error("SEND_ADMIN_ALERT_MESSAGE", "Couldn't send admin alert message, channel was not found.");
 
- 		}
 
- 	}
 
- 	connectedHook() {
 
- 		return Promise.race([
 
- 			new Promise(resolve => bus.once("discordConnected", resolve)),
 
- 			new Promise(resolve => {
 
- 				if (this.connected) resolve();
 
- 			})
 
- 		]);
 
- 	}
 
- }
 
 
  |