2019-05-17 17:29:31 +00:00
|
|
|
var Discord = require('discord.io');
|
2019-12-23 09:09:29 +00:00
|
|
|
var winston = require('winston');
|
2019-05-18 13:09:05 +00:00
|
|
|
var fs = require('fs');
|
|
|
|
|
var diceRoller = require('./diceRolling.js');
|
|
|
|
|
|
2019-12-23 09:09:29 +00:00
|
|
|
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' }),
|
|
|
|
|
]
|
2019-05-17 17:29:31 +00:00
|
|
|
});
|
|
|
|
|
|
2019-05-23 16:32:55 +00:00
|
|
|
const get_auth = () => {
|
|
|
|
|
if (process.env.DISCORD_TOKEN != undefined) {
|
|
|
|
|
logger.info('using auth from environment variable');
|
|
|
|
|
return { token: process.env.DISCORD_TOKEN };
|
|
|
|
|
} else {
|
|
|
|
|
logger.info('using auth from auth.json file');
|
|
|
|
|
return JSON.parse(fs.readFileSync('./auth.json', 'utf8'));
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var auth = get_auth();
|
2019-05-17 17:29:31 +00:00
|
|
|
var bot = new Discord.Client({
|
|
|
|
|
token: auth.token,
|
|
|
|
|
autorun: true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bot.on('ready', function (evt) {
|
|
|
|
|
logger.info('Connected');
|
2019-12-23 09:09:29 +00:00
|
|
|
logger.info('Logged in as: ' + bot.username + ' - (' + bot.id + ')');
|
2019-05-17 17:29:31 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bot.on('message', function (user, userID, channelID, message, evt) {
|
|
|
|
|
if (message.substring(0, 1) == '/') {
|
|
|
|
|
try {
|
|
|
|
|
var args = message.substring(1).split(' ');
|
|
|
|
|
var cmd = args[0];
|
|
|
|
|
|
2019-05-18 13:09:05 +00:00
|
|
|
console.log(message);
|
2019-05-17 17:29:31 +00:00
|
|
|
|
|
|
|
|
switch (cmd) {
|
|
|
|
|
case 'hi':
|
2019-05-23 17:35:14 +00:00
|
|
|
sendMessage(channelID, 'Hello, World!');
|
|
|
|
|
break;
|
2019-05-17 17:29:31 +00:00
|
|
|
case 'roll':
|
2019-12-23 09:09:29 +00:00
|
|
|
if (message.length < 7) {
|
|
|
|
|
sendMessage(
|
|
|
|
|
channelID,
|
|
|
|
|
'Can\'t roll nothing'
|
|
|
|
|
)
|
|
|
|
|
break;
|
|
|
|
|
}
|
2019-05-18 12:18:45 +00:00
|
|
|
if (/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi.test(message.substring(6).replace(/\s/g, ''))) {
|
2019-12-23 09:09:29 +00:00
|
|
|
var res = (message.substring(6) + ': ' + diceRoller.roll(message.substring(6))).replace('*', '\\*')
|
2019-05-18 12:18:45 +00:00
|
|
|
sendMessage(
|
|
|
|
|
channelID,
|
2019-12-23 09:09:29 +00:00
|
|
|
res
|
2019-05-18 13:09:05 +00:00
|
|
|
);
|
2019-05-17 17:29:31 +00:00
|
|
|
} else {
|
2019-05-17 21:01:12 +00:00
|
|
|
sendMessage(channelID, "I don't recognize this: \""
|
|
|
|
|
+ message
|
|
|
|
|
.substring(6)
|
2019-05-18 12:18:45 +00:00
|
|
|
.replace(/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi, "")
|
2019-05-17 21:01:12 +00:00
|
|
|
.toString()
|
|
|
|
|
+ "\"");
|
2019-05-17 17:29:31 +00:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
2019-12-23 09:09:29 +00:00
|
|
|
} catch (e) {
|
|
|
|
|
error(e, channelID);
|
2019-05-17 17:29:31 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2019-12-23 09:09:29 +00:00
|
|
|
function error(error, channelID){
|
|
|
|
|
var res = "Sorry, something went wrong.";
|
|
|
|
|
|
|
|
|
|
sendMessage(channelID, res);
|
|
|
|
|
logger.error(error)
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-17 21:01:12 +00:00
|
|
|
function sendMessage(client, message) {
|
2019-12-23 09:09:29 +00:00
|
|
|
if (message.length > 2000) {
|
2019-05-18 13:09:05 +00:00
|
|
|
message = 'Response was to long. Sorry';
|
2019-05-17 21:01:12 +00:00
|
|
|
}
|
|
|
|
|
bot.sendMessage({
|
|
|
|
|
to: client,
|
|
|
|
|
message: message
|
2019-05-18 13:09:05 +00:00
|
|
|
});
|
2019-05-17 21:01:12 +00:00
|
|
|
}
|