diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-12-30 13:11:06 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-12-30 13:11:06 +0100 |
| commit | c6c5027865743328d0542246fef70e0fafe0f0f1 (patch) | |
| tree | 9348d4afa900c170aa534f602b6f7a823292a831 /bot.js | |
| parent | abd33f47fbbcc92610b83341c61f5d1911eed590 (diff) | |
| parent | 1881a2ecd48be772fd83b20068fe9946f1365eeb (diff) | |
| download | discordbot-develop.tar.gz discordbot-develop.zip | |
Merge branch 'master' into developdevelop
Diffstat (limited to 'bot.js')
| -rw-r--r-- | bot.js | 103 |
1 files changed, 103 insertions, 0 deletions
@@ -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); +}); |
