From a67aca73638652bb6e7d84d814da2d3ecf2bb136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85dne=20E=2E=20Moldes=C3=A6ter?= Date: Mon, 23 Dec 2019 10:09:29 +0100 Subject: [PATCH] Improved logging --- .gitignore | 4 +++- bot.js | 45 +++++++++++++++++++++++----------- diceRolling.js | 65 +++++++++++++++++++++++++------------------------- 3 files changed, 66 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index 7b46c52..5b7965f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules/ -auth.json \ No newline at end of file +auth.json +error.log +verbose.log \ No newline at end of file diff --git a/bot.js b/bot.js index 4d9d1ae..948cf2a 100644 --- a/bot.js +++ b/bot.js @@ -1,14 +1,18 @@ var Discord = require('discord.io'); -var logger = require('winston'); +var winston = require('winston'); var fs = require('fs'); var diceRoller = require('./diceRolling.js'); - -logger.remove(logger.transports.Console); -logger.add(new logger.transports.Console, { - colorize: true +const logger = winston.createLogger({ + level: 'debug', + format: winston.format.json(), + defaultMeta: { service: 'user-service' }, + transports: [ + new winston.transports.Console(), + new winston.transports.File({ filename: 'error.log', level: 'error' }), + new winston.transports.File({ filename: 'verbose.log', level: 'verbose' }), + ] }); -logger.level = 'debug'; const get_auth = () => { if (process.env.DISCORD_TOKEN != undefined) { @@ -21,7 +25,6 @@ const get_auth = () => { }; var auth = get_auth(); - var bot = new Discord.Client({ token: auth.token, autorun: true @@ -29,8 +32,7 @@ var bot = new Discord.Client({ bot.on('ready', function (evt) { logger.info('Connected'); - logger.info('Logged in as: '); - logger.info(bot.username + ' - (' + bot.id + ')'); + logger.info('Logged in as: ' + bot.username + ' - (' + bot.id + ')'); }); bot.on('message', function (user, userID, channelID, message, evt) { @@ -46,10 +48,18 @@ bot.on('message', function (user, userID, channelID, message, evt) { sendMessage(channelID, 'Hello, World!'); break; case 'roll': - if (/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi.test(message.substring(6).replace(/\s/g, ''))) { + if (message.length < 7) { sendMessage( channelID, - message.substring(6) + ': ' + diceRoller.roll(message.substring(6)) + 'Can\'t roll nothing' + ) + break; + } + if (/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi.test(message.substring(6).replace(/\s/g, ''))) { + var res = (message.substring(6) + ': ' + diceRoller.roll(message.substring(6))).replace('*', '\\*') + sendMessage( + channelID, + res ); } else { sendMessage(channelID, "I don't recognize this: \"" @@ -61,14 +71,21 @@ bot.on('message', function (user, userID, channelID, message, evt) { } break; } - } catch (error) { - console.log(error); + } catch (e) { + error(e, channelID); } } }); +function error(error, channelID){ + var res = "Sorry, something went wrong."; + + sendMessage(channelID, res); + logger.error(error) +} + function sendMessage(client, message) { - if (message.length > 2500) { + if (message.length > 2000) { message = 'Response was to long. Sorry'; } bot.sendMessage({ diff --git a/diceRolling.js b/diceRolling.js index 99afad2..5a2fdf0 100644 --- a/diceRolling.js +++ b/diceRolling.js @@ -2,80 +2,79 @@ module.exports = { roll: function (req) { if (typeof req !== "string") { - return "Mollux! You don goofed!" + return "<@138725786067664897>! You don goofed!"; } // Splits request into segments. Example "3d6+3+5d2" => ["3d6", "+3", "+5d2"] - var segments = req.replace(/\s/g, '').match(/([+\-]?\d{0,}d\d{1,})|([+\-*/]\d{1,})/gi) + var segments = req.replace(/\s/g, '').match(/([+\-]?\d{0,}d\d{1,})|([+\-*/x]\d{1,})/gi); var message = ''; - var i = -1 - var results = [] - var curResult = 0 - var curMod = 1 + var i = -1; + var results = []; + var curResult = 0; + var curMod = 1; segments.forEach(e => { if (e.match(/([+\-]?\d{0,}d\d{1,})/gi)) { // xdy // if not first add previous result and resetting curResult if (i >= 0) { - curResult *= curMod - results[i] = curResult + curResult *= curMod; + results[i] = curResult; - curResult = 0 + curResult = 0; } i++; // Set modifier for dice group - curMod = (e.substring(0, 1) === '-') ? -1 : 1 + curMod = (e.substring(0, 1) === '-') ? -1 : 1; // dice[0] = number of rolls, dice[1] = sides of dice rolled - var dice = e.replace(/[+\-]?/, '').split(/d/i) - var rolls = [] + var dice = e.replace(/[+\-]?/, '').split(/d/i); + var rolls = []; for (var l = 0; l < parseInt(dice[0] === '' ? 1 : dice[0]); l++) { - rolls[l] = rollDice(dice[1]) - curResult += rolls[l] + rolls[l] = rollDice(dice[1]); + curResult += rolls[l]; } // add result to message - var sign = e.match(/[+\-]/) - message += ((sign === null) ? ' ' : ' ' + sign) + '[' + rolls.toString() + ']' - } else if (e.match(/([+\-*/]\d{1,})/gi)) { // Modifier + var sign = e.match(/[+\-]/); + message += ((sign === null) ? ' ' : ' ' + sign) + '[' + rolls.toString() + ']'; + } else if (e.match(/([+\-*/x]\d{1,})/gi)) { // Modifier switch (e.substring(0, 1)) { case '+': - curResult += parseInt(e.substring(1)) + curResult += parseInt(e.substring(1)); break; case '-': - curResult -= parseInt(e.substring(1)) + curResult -= parseInt(e.substring(1)); break; case '*': case 'x': - curResult *= parseInt(e.substring(1)) + curResult *= parseInt(e.substring(1)); break; case '/': - curResult /= parseInt(e.substring(1)) + curResult /= parseInt(e.substring(1)); break; } - message += e + message += e; } }) - curResult *= curMod - results[i] = curResult + curResult *= curMod; + results[i] = curResult; // Adding the sum to the message - var sum = 0 + var sum = 0; if (results.length > 1){ - sum = results.reduce(getSum) + sum = results.reduce(getSum); } else if (results.length === 1){ - sum = results[0] + sum = results[0]; } - message += ' = ' + sum - - console.log(results.toString()) - console.log(i) - console.log(sum) + message += ' = ' + sum; - return message + if (message.length > 2000) + message = "Response was to long. Sum: " + sum; + + return message; } }