Rollux/bot.js

86 lines
2.7 KiB
JavaScript
Raw Normal View History

var Discord = require('discord.js');
2019-12-23 09:09:29 +00:00
var winston = require('winston');
var fs = require('fs');
var diceRoller = require('./diceRolling.js');
const client = new Discord.Client();
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
});
const get_auth = () => {
if (process.env.DISCORD_TOKEN != undefined) {
2019-12-30 18:57:54 +00:00
logger.info('using auth from environment variable');
return { token: process.env.DISCORD_TOKEN };
} else {
2019-12-30 18:57:54 +00:00
logger.info('using auth from auth.json file');
return JSON.parse(fs.readFileSync('./auth.json', 'utf8'));
}
};
client.on('ready', () => {
2019-05-17 17:29:31 +00:00
logger.info('Connected');
logger.info(`Logged in as: ${client.user.tag}`);
client.user.setPresence({ activity: { name: 'with dice | /roll' }})
.then(logger.info)
2020-04-21 20:18:44 +00:00
.catch(er => logger.error(`Encountered error: ${JSON.stringify(er)}`));
2019-05-17 17:29:31 +00:00
});
client.on('message', msg => {
try {
if (msg.content.substring(0, 1) !== '/') return;
2019-05-17 17:29:31 +00:00
var args = msg.content.substring(1).split(' ');
var cmd = args[0];
2019-05-17 17:29:31 +00:00
switch (cmd) {
case 'hi':
sendMessage(channelID, 'Hello, World!');
break;
case 'roll':
if (msg.content.length < 7) {
sendMessage(
channelID,
'Can\'t roll nothing'
)
break;
}
if (/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi.test(msg.content.substring(6).replace(/\s/g, ''))) {
var res = (msg.content.substring(6) + ': ' + diceRoller.roll(msg.content.substring(6))).replace('*', '\\*')
msg.reply(res);
} else {
var res = "I don't recognize this: \""
+ msg.content
.substring(6)
.replace(/([+\-]?\d{0,}d\d{1,})([+\-*x/]\d{1,}){0,}/gi, "")
.toString()
+ "\"";
msg.reply(res);
}
break;
2019-05-17 17:29:31 +00:00
}
} catch (er) {
msg.reply('Sorry, something went wrong.')
2020-04-21 20:18:44 +00:00
logger.error(`Encountered error: ${JSON.stringify(er)}`);
2019-05-17 17:29:31 +00:00
}
});
2020-04-21 20:18:44 +00:00
client.on('warn', warn => {
logger.warn(`Warning: ${JSON.stringify(er)}`);
});
client.on('error', er => {
logger.error(`Error event triggered: ${JSON.stringify(er)}`);
});
var auth = get_auth();
2020-04-21 20:18:44 +00:00
client.login(auth.token);