UNPKG

discord-client

Version:

Discord bot framework, create Discord bots with Discord.js better and faster.

107 lines (91 loc) 2.31 kB
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); } } } }