/** * api: * Commands(irc object, database object); * * example: * commands = require('./mysql/commands.js')(irc, db, { * bot_name : 'bot name', * currency: 'currency name' * }); */ //-------- Construct --------- function Commands(irc, db, options) { var __self = this; __self.irc = irc; __self.db = db; // config __self.config = options || {}; __self.config.bot_name = options.bot_name || ''; __self.config.currency = options.currency || 'coins'; __self.command_list = []; } //-------- Methods -------- Commands.prototype.start = function() { var __self = this, sql = 'SELECT * FROM commands'; __self.db.execute(sql, function(rows) { for (var i = 0; i < rows.length; i++) { __self.command_list.push(rows[i].command); } }); }; Commands.prototype.commands = function(data) { var __self = this, command_check = data[3].slice(1).charAt(0), command = data[3].slice(2); // check if potential command was called and match it with stored commands // if the bots name is used as a command, then display all of the available commands if(command_check === '!' && __self.command_list.indexOf(command) >= 0) { var sql = 'SELECT * FROM commands WHERE command = \'' + command + '\''; // get command info from database __self.db.execute(sql, function(rows) { // filter through command results for (var i = 0; i < rows.length; i++) { // match db command with called command if (rows[i].command = command) { // display based on viewer auth if (rows[i].auth === 1) { __self.irc.emit('message',{message:rows[i].text, options:{caller: __self.irc.caller(data[0]), auth: 1}}); break; } else if (rows[i].auth === 0) { __self.irc.emit('message',{message:rows[i].text, options:null}); break; } } } }); } else if (command_check === '!' && command === __self.config.bot_name.toLowerCase()) { var commands = '> Commands: !' + __self.config.currency.toLowerCase() + ', '; for (var i = 0; i < __self.command_list.length; i++) { if (i !== __self.command_list.length - 1) { commands += '!' + __self.command_list[i] + ', '; } else { commands += '!' + __self.command_list[i]; } } __self.irc.emit('message',{message:commands, options:{caller: __self.irc.caller(data[0]), auth: 1}}); } }; module.exports = function(irc, db, options) { return new Commands(irc, db, options); };