Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ bower_components
build/Release

# Dependency directories
node_modules/
node_modules/*
!node_modules/@bot
jspm_packages/

# TypeScript v1 declaration files
Expand Down
14 changes: 10 additions & 4 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
// Load configuration.
require('dotenv').config();
const LOADER = require('./core/module-loader');
const logger = require('./core/logger');

LOADER.loadModules();
logger.log('store', 'Bot Started', new Date());
//load @bot hooks
require('./core/bootstrap');

const { loader } = require('@bot');
const { log } = require('@bot').logger;

log('notify', `BOTKEY: [${process.env.DISCORD_KEY}]`);
log('notify', `MONGO: [${process.env.MONGODB_URL}]`);

loader.loadModules();
16 changes: 16 additions & 0 deletions core/bootstrap.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const core = require('@bot');

const logger = require('./logger');
core.hook('logger', logger);

const client = require('./client');
core.hook('client', client);

const loader = require('./module-loader');
core.hook('loader', loader);

const commands = require('./commands');
core.hook('commands', commands);

const database = require('./database');
core.hook('database', database);
7 changes: 4 additions & 3 deletions core/client.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
const Discord = require('discord.js');
const { log } = require('@bot').logger;

const client = new Discord.Client();
const LOGGER = require('./logger');
console.log(process.env.DISCORD_KEY);

const key = process.env.DISCORD_KEY;

client.on('ready', () => {
client.user.setActivity("cowsay");
LOGGER.log('notify', 'Bot Started');
log('notify', 'Bot Started');
});

client.login(key);
Expand Down
24 changes: 19 additions & 5 deletions core/commands.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
const discord = require('./client');
const LOADER = require('./module-loader');
const database = require('./database');
const { loader } = require('@bot');
const { discord, client } = require('@bot').client;

const registeredCommands = [];
let prefix = '!';
Expand Down Expand Up @@ -42,13 +41,28 @@ exports.getCommands = command => registeredCommands.filter(e => e.command === co

exports.getAllCommands = () => registeredCommands;

discord.client.on('message', (msg) => {
exports.getModuleHelp = (discrim) => {
const module = loader.getModule(discrim);
if (module) {
const em = new discord.RichEmbed();
const moduleCommands = this.getCommands(module.command);
em.setTitle(`${module.name} | Help`);
moduleCommands.forEach(c => {
em.addField(`${this.getPrefix()}${c.command} ${c.params}`, `${c.description}`)
});
return em;
} else {
return `Are you sure that \`${discrim}\` is a valid module descriminator`;
}
}

client.on('message', (msg) => {
const message = msg.content;
for (let i = 0; i < registeredCommands.length; i += 1) {
const command = registeredCommands[i];
const r = new RegExp(`${prefix}${command.compiled}`);
const match = message.match(r) ? message.match(r) : [];
if (LOADER.getState(command) && (`${prefix}${command.compiled}` === message || match[1])) {
if (loader.getState(command) && (`${prefix}${command.compiled}` === message || match[1])) {
return command.response(msg, match);
}
}
Expand Down
40 changes: 21 additions & 19 deletions core/database.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,40 @@
const {log} = require('./logger');
const { log } = require('@bot').logger;
const mongoose = require('mongoose');

const Schema = mongoose.Schema;
const database = mongoose.connection;

mongoose.connect(process.env.MONGODB_URL, { useNewUrlParser: true });
const database = mongoose.connection;

database.on('error', console.error.bind(console, 'connection error:'));
database.once('open', function() {
log('notify', 'MongoDB Connected');

database.once('open', function () {
log('notify', 'MongoDB Connected');
});

const Server = mongoose.model('Server', {
id: Number,
name: String
id: Number,
name: String
});

const User = mongoose.model('User', {
server: { type: Schema.Types.ObjectId, ref: 'Server' },
name: String,
descrim: Number,
warnings: Number,
isAdmin: Boolean
server: { type: Schema.Types.ObjectId, ref: 'Server' },
name: String,
descrim: Number,
warnings: Number,
isAdmin: Boolean
});

const Configuration = mongoose.model('Configuration', {
server: { type: Schema.Types.ObjectId, ref: 'Server' },
prefix: String,
adminRole: String,
help: String
server: { type: Schema.Types.ObjectId, ref: 'Server' },
prefix: String,
adminRole: String,
help: String
});

module.exports = {
server: Server,
user: User,
configuration: Configuration,
database: database
server: Server,
user: User,
configuration: Configuration,
database: database
};
20 changes: 2 additions & 18 deletions core/module-loader.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
const fs = require('fs');
const PATH = require('path');
const logger = require('./logger');
const { discord } = require('./client');
const commands = require('./commands');

const { logger } = require('@bot');

const loadedModules = [];

Expand Down Expand Up @@ -33,18 +32,3 @@ exports.getModules = () => loadedModules;
exports.getState = ({ command }) => loadedModules.filter(m => m.command === command && m.state === true).length > 0;

exports.getModule = (discrim) => loadedModules.filter(m => m.discrim === discrim)[0];

exports.getModuleHelp = (discrim) => {
const module = this.getModule(discrim);
if (module) {
const em = new discord.RichEmbed();
const moduleCommands = commands.getCommands(module.command);
em.setTitle(`${module.name} | Help`);
moduleCommands.forEach(c => {
em.addField(`${commands.getPrefix()}${c.command} ${c.params}`, `${c.description}`)
});
return em;
} else {
return `Are you sure that \`${discrim}\` is a valid module descriminator`;
}
}
7 changes: 3 additions & 4 deletions modules/customize.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
const commands = require('../core/commands');
const { client } = require('../core/client');
const LOADER = require('../core/module-loader');
const { commands } = require('@bot');
const { client } = require('@bot').client;

exports.command = 'customize';

commands.register(this.command, '', 'Customize Help', (msg) => {
msg.channel.send(LOADER.getModuleHelp('customize'));
msg.channel.send(commands.getModuleHelp('customize'));
});

commands.register(this.command, 'game (.*)', 'Change the bots game', (msg, extra) => {
Expand Down
9 changes: 4 additions & 5 deletions modules/help.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
const commands = require('../core/commands');
const { discord } = require('../core/client');
const LOADER = require('../core/module-loader');
const { commands, loader } = require('@bot');
const { discord } = require('@bot').client;

exports.command = 'help';

commands.register(this.command, '', 'Shows the help message', (msg) => {
const modules = LOADER.getModules();
const modules = loader.getModules();
const em = new discord.RichEmbed();
modules.forEach(m => {
if (m.discrim) {
Expand All @@ -16,7 +15,7 @@ commands.register(this.command, '', 'Shows the help message', (msg) => {
});

commands.register(this.command, '(.*)', 'Shows the help message', (msg, extra) => {
msg.channel.send(LOADER.getModuleHelp(extra[1]));
msg.channel.send(commands.getModuleHelp(extra[1]));
});

exports.name = 'Help';
Expand Down
4 changes: 2 additions & 2 deletions modules/moderation/user-management.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const commands = require('../../core/commands');
const { discord } = require('../../core/client');
const { commands } = require('@bot');
const { discord } = require('@bot').client;

exports.command = 'mod';

Expand Down
11 changes: 5 additions & 6 deletions modules/modulehelper.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
const LOADER = require('../core/module-loader');
const commands = require('../core/commands');
const { discord } = require('../core/client');
const { commands, loader } = require('@bot');
const { discord } = require('@bot').client;

exports.command = 'modules';

commands.register(this.command, 'toggle (.*)', 'Toggle a module.', (msg, extra) => {
const module = LOADER.getModule(extra[1]);
const module = loader.getModule(extra[1]);
if (module) {
module.toggle();
msg.reply(`Alright, module was toggled: ${module.state}`);
Expand All @@ -15,7 +14,7 @@ commands.register(this.command, 'toggle (.*)', 'Toggle a module.', (msg, extra)
});

commands.register(this.command, 'status (.*)', 'Check the status of a module', (msg, extra) => {
const module = LOADER.getModule(extra[1]);
const module = loader.getModule(extra[1]);
if (module) {
msg.reply(`Module status: ${module.state}`);
} else {
Expand All @@ -24,7 +23,7 @@ commands.register(this.command, 'status (.*)', 'Check the status of a module', (
});

commands.register(this.command, '', 'Get a list of module discriminators', (msg) => {
const modules = LOADER.getModules();
const modules = loader.getModules();
const em = new discord.RichEmbed();
em.title = "Modules";
modules.forEach(m => {
Expand Down
2 changes: 1 addition & 1 deletion modules/ping-pong.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const commands = require('../core/commands');
const { commands } = require('@bot');

exports.command = 'ping';

Expand Down
7 changes: 7 additions & 0 deletions node_modules/@bot/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions node_modules/@bot/package.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.