const Transport = require('winston-transport'); const { WebhookClient } = require('discord.js'); const { username } = require('os').userInfo(); const { inspect } = require('util'); const options = require('../../../options.json'); // eslint-disable-next-line no-control-regex const regex = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g class DiscordWebhook extends Transport { constructor(opts) { super(opts); this.webhookClient = new WebhookClient( options.logger.webhook.id, options.logger.webhook.token ); } log(info, callback) { setImmediate(() => { this.emit('logged', info); }); const message = info.message.replace(regex, '') .replace(new RegExp(options.bot.token, 'g'), '') .replace(new RegExp(username, 'g'), ''); const developers = ['nolan', 'navy']; const random = developers[Math.floor(Math.random()*developers.length)]; const embed = { color: 0xe88388, timestamp: new Date(), description: `\`\`\`${message}\`\`\``, footer: { text: `probably ${random}'s fault` } }; this.webhookClient.send('', { embeds: [embed] }); callback(); } }; module.exports = DiscordWebhook;