|
|
/** * 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); };
|