discord-client
Version:
Discord bot framework, create Discord bots with Discord.js better and faster.
107 lines (91 loc) • 2.31 kB
JavaScript
var Discord = require('discord.js');
var bot = new Discord.Client();
var dbstack = require('./dbstack.js');
var prefixes;
if(!dbstack.dbExists('dcprefixes')) dbstack.create('dcprefixes');
dbstack.get('dcprefixes', (data) => { prefixes = data });
var defaultPrefix = '';
var sPrefix = '';
var names = [];
var types = [];
var responses = [];
module.exports = class DiscordClient {
constructor(token) {
this.token = token;
}
connect() {
bot.login(this.token).then(() => {
console.log('Logged in and connected to ' + bot.guilds.size + ' guilds.');
});
}
setPrefix(type, prefix) {
if(type == 'global') {
defaultPrefix = prefix;
sPrefix = prefix;
} else {
if(bot.guilds.has(type)) {
prefixes.add(type + ': ' + prefix);
sPrefix = prefix;
} else {
throw Error('Invalid guild ID!');
}
}
}
command(name, response) {
if(response.response) {
names.push(name);
types.push('default');
responses.push(response.response);
} else {
names.push(name);
types.push('advanced');
responses.push(response);
};
}
alias(cmd, alias) {
for(var i = 0; i <= names.length; i++) {
if(names[i] == cmd.toLowerCase()) {
if(types[i] == 'default') {
names.push(alias);
types.push('default');
responses.push(responses[i]);
} else if(types[i] == 'advanced') {
names.push(alias);
types.push('advanced');
responses.push(responses[i]);
}
}
}
}
}
bot.on('message', (msg) => {
try {
var i = prefixes.get(msg.guild.id);
if(i) {
if(msg.content && msg.author && msg.content.startsWith(i)) {
try {
cmd(msg);
} catch(err) {
console.log(err);
}
}
}
} catch(err) {
prefixes.add(msg.guild.id + ': ' + defaultPrefix);
if(msg.content && msg.author && msg.content.startsWith(defaultPrefix)) {
cmd(msg)
}
}
});
function cmd(msg) {
for(var i = 0; i <= names.length; i++) {
if(msg.content.startsWith(sPrefix + names[i])) {
if(types[i] == 'default') {
msg.channel.sendMessage(responses[i]);
} else if(types[i] == 'advanced') {
var args = msg.content.split(' ').slice(1).join(' ');
responses[i].execute(bot, msg, args);
}
}
}
}