Improved logging

This commit is contained in:
Ådne E. Moldesæter 2019-12-23 10:09:29 +01:00
parent 5ec0becbb7
commit a67aca7363
3 changed files with 66 additions and 48 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
node_modules/
auth.json
error.log
verbose.log

45
bot.js
View File

@ -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({

View File

@ -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
message += ' = ' + sum;
console.log(results.toString())
console.log(i)
console.log(sum)
if (message.length > 2000)
message = "Response was to long. Sum: " + sum;
return message
return message;
}
}