zappyzep/src/index.ts

82 lines
2.2 KiB
TypeScript
Raw Normal View History

2018-07-01 03:35:51 +03:00
require("dotenv").config();
process.on("unhandledRejection", (reason, p) => {
// tslint:disable-next-line
console.error(reason);
2018-08-02 03:46:29 +03:00
process.exit(1);
2018-07-01 03:35:51 +03:00
});
2018-08-03 19:25:00 +03:00
process.on("uncaughtException", err => {
if (err.message && err.message.startsWith("DiscordHTTPError")) {
console.error(err);
return;
} else {
console.error(err);
process.exit(1);
}
});
// Always use UTC
// This is also set for the database in knexfile
import moment from "moment-timezone";
moment.tz.setDefault("UTC");
2018-07-01 03:35:51 +03:00
import { Client } from "eris";
2018-07-01 04:31:24 +03:00
import { Knub, logger } from "knub";
2018-08-05 01:32:59 +03:00
import knex from "./knex";
// Global plugins
2018-07-01 03:35:51 +03:00
import { BotControlPlugin } from "./plugins/BotControl";
2018-08-05 01:32:59 +03:00
import { LogServerPlugin } from "./plugins/LogServer";
// Guild plugins
2018-07-01 03:35:51 +03:00
import { ModActionsPlugin } from "./plugins/ModActions";
import { UtilityPlugin } from "./plugins/Utility";
import { LogsPlugin } from "./plugins/Logs";
import { PostPlugin } from "./plugins/Post";
2018-07-29 15:18:26 +03:00
import { ReactionRolesPlugin } from "./plugins/ReactionRoles";
import { CensorPlugin } from "./plugins/Censor";
2018-07-30 23:35:44 +03:00
import { PersistPlugin } from "./plugins/Persist";
import { SpamPlugin } from "./plugins/Spam";
2018-08-05 01:32:59 +03:00
import { TagsPlugin } from "./plugins/Tags";
2018-07-01 03:35:51 +03:00
// Run latest database migrations
2018-07-01 04:31:24 +03:00
logger.info("Running database migrations");
2018-07-01 03:35:51 +03:00
knex.migrate.latest().then(() => {
2018-07-31 20:58:48 +03:00
const client = new Client(process.env.TOKEN, {
getAllUsers: true
});
client.setMaxListeners(100);
2018-07-01 03:35:51 +03:00
const bot = new Knub(client, {
plugins: {
utility: UtilityPlugin,
mod_actions: ModActionsPlugin,
logs: LogsPlugin,
2018-07-29 15:18:26 +03:00
post: PostPlugin,
reaction_roles: ReactionRolesPlugin,
2018-07-30 23:35:44 +03:00
censor: CensorPlugin,
persist: PersistPlugin,
2018-08-05 01:32:59 +03:00
spam: SpamPlugin,
tags: TagsPlugin
2018-07-01 03:35:51 +03:00
},
globalPlugins: {
bot_control: BotControlPlugin,
log_server: LogServerPlugin
},
options: {
getEnabledPlugins(guildId, guildConfig): string[] {
const plugins = guildConfig.plugins || {};
const keys: string[] = Array.from(this.plugins.keys());
return keys.filter(pluginName => {
return plugins[pluginName] && plugins[pluginName].enabled !== false;
});
}
2018-07-01 03:35:51 +03:00
}
});
2018-07-01 04:31:24 +03:00
logger.info("Starting the bot");
2018-07-01 03:35:51 +03:00
bot.run();
});