summaryrefslogtreecommitdiff
path: root/bot.js
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-12-30 13:11:06 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2017-12-30 13:11:06 +0100
commitc6c5027865743328d0542246fef70e0fafe0f0f1 (patch)
tree9348d4afa900c170aa534f602b6f7a823292a831 /bot.js
parentabd33f47fbbcc92610b83341c61f5d1911eed590 (diff)
parent1881a2ecd48be772fd83b20068fe9946f1365eeb (diff)
downloaddiscordbot-c6c5027865743328d0542246fef70e0fafe0f0f1.tar.gz
discordbot-c6c5027865743328d0542246fef70e0fafe0f0f1.zip
Merge branch 'master' into developdevelop
Diffstat (limited to 'bot.js')
-rw-r--r--bot.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/bot.js b/bot.js
new file mode 100644
index 0000000..1efa1e4
--- /dev/null
+++ b/bot.js
@@ -0,0 +1,103 @@
+#!/usr/bin/node
+/* jshint esnext:true */
+"use strict";
+
+const PREVIEW = process.env.PREVIEW != "false";
+
+const sqlite = require("sqlite"),
+ path = require("path"),
+ winston = require("winston"),
+ loggly = require("winston-loggly-bulk"),
+ Commando = require("discord.js-commando"),
+ oneLine = require("common-tags").oneLine,
+ client = new Commando.Client({
+ owners: ["227440521704898561", "208974925199966208"],
+ // shutterfly, stormcaller
+ commandPrefix: (PREVIEW? "?" : "!"),
+ invite: "https://discord.gg/txTchJY",
+ unknownCommandResponse: false
+ }),
+ util = require("./util");
+
+const DISCORD_TOKEN = process.env.DISCORD_TOKEN,
+ LOGGLY_TOKEN = process.env.LOGGLY_TOKEN;
+
+const logger = new (winston.Logger)({
+ transports: [
+ new (winston.transports.Console)({
+ timestamp: true,
+ colorize: true
+ })
+ ]
+});
+
+if (LOGGLY_TOKEN)
+ logger.add(winston.transports.Loggly, {
+ inputToken: LOGGLY_TOKEN,
+ subdomain: "kvahuja",
+ tags: ["frontend", "discordbot"],
+ json: true
+ });
+
+client
+ .on("error", logger.error)
+ .on("warn", logger.warn)
+ .on("debug", logger.info)
+ .on("ready", () => {
+ logger.info(`Client ready; logged in as ${client.user.username}#${client.user.discriminator} (${client.user.id})`);
+ util.rotateGameStatus(client);
+ })
+ .on('disconnect', () => { logger.warn('Disconnected!'); })
+ .on('reconnecting', () => { logger.warn('Reconnecting...'); })
+ .on('commandError', (cmd, err) => {
+ if(err instanceof Commando.FriendlyError) return;
+ logger.error(`Error in command ${cmd.groupID}:${cmd.memberName}`, err);
+ })
+ .on('commandBlocked', (msg, reason) => {
+ logger.info(oneLine`
+ Command ${msg.command ? `${msg.command.groupID}:${msg.command.memberName}` : ''}
+ blocked; ${reason}
+ `);
+ })
+ .on('commandPrefixChange', (guild, prefix) => {
+ logger.info(oneLine`
+ Prefix ${prefix === '' ? 'removed' : `changed to ${prefix || 'the default'}`}
+ ${guild ? `in guild ${guild.name} (${guild.id})` : 'globally'}.
+ `);
+ })
+ .on('commandStatusChange', (guild, command, enabled) => {
+ logger.info(oneLine`
+ Command ${command.groupID}:${command.memberName}
+ ${enabled ? 'enabled' : 'disabled'}
+ ${guild ? `in guild ${guild.name} (${guild.id})` : 'globally'}.
+ `);
+ })
+ .on('groupStatusChange', (guild, group, enabled) => {
+ logger.info(oneLine`
+ Group ${group.id}
+ ${enabled ? 'enabled' : 'disabled'}
+ ${guild ? `in guild ${guild.name} (${guild.id})` : 'globally'}.
+ `);
+ })
+
+ // response reaction interface
+ .on("messageReactionAdd", util.onNewReaction);
+
+client.setProvider(
+ sqlite.open(path.join(__dirname, "settings.sqlite3")).then(
+ db => new Commando.SQLiteProvider(db)));
+
+client.registry
+ .registerGroup('vainsocial', 'VainSocial')
+ .registerGroup('vainsocial-guild', 'VainSocial Guild management')
+ .registerDefaultTypes()
+ .registerDefaultGroups()
+ .registerDefaultCommands({ eval_: false, commandState: false })
+ .registerCommandsIn(path.join(__dirname, 'commands'));
+
+
+client.login(DISCORD_TOKEN);
+
+process.on("unhandledRejection", err => {
+ logger.error("Uncaught Promise Error", err);
+});