Custom commands working. addcmd/removecmd <trigger> <text>
This commit is contained in:
parent
b10ba98227
commit
ccf9ff5534
10
.gitignore
vendored
10
.gitignore
vendored
@ -181,3 +181,13 @@ KarmaBot.js
|
|||||||
Knowledge_Bot.js
|
Knowledge_Bot.js
|
||||||
WizardBot.js
|
WizardBot.js
|
||||||
XBucksBot.js
|
XBucksBot.js
|
||||||
|
|
||||||
|
#me me me
|
||||||
|
shaneomad.js
|
||||||
|
pyrionflax.js
|
||||||
|
testbot.js
|
||||||
|
*.png
|
||||||
|
web/public/browserconfig.xml
|
||||||
|
node_modules/.bin
|
||||||
|
web/public/favicon.ico
|
||||||
|
web/public/statistics
|
||||||
|
@ -51,14 +51,17 @@ Commands.prototype.commands = function(data) {
|
|||||||
for (var i = 0; i < rows.length; i++) {
|
for (var i = 0; i < rows.length; i++) {
|
||||||
// match db command with called command
|
// match db command with called command
|
||||||
if (rows[i].command = command) {
|
if (rows[i].command = command) {
|
||||||
|
/*
|
||||||
// display based on viewer auth
|
// display based on viewer auth
|
||||||
if (rows[i].auth === 1) {
|
if (rows[i].auth === 1) {
|
||||||
__self.irc.emit('message',{message:rows[i].text, options:{caller: __self.irc.caller(data[0]), auth: 1}});
|
__self.irc.emit('message',{message:'> '+rows[i].text, options:{caller: __self.irc.caller(data[0]), auth: 1}});
|
||||||
break;
|
break;
|
||||||
} else if (rows[i].auth === 0) {
|
} else if (rows[i].auth === 0) {
|
||||||
__self.irc.emit('message',{message:rows[i].text, options:null});
|
__self.irc.emit('message',{message:'> '+rows[i].text, options:null});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
__self.irc.emit('message',{message:'> '+rows[i].text, options:null});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -71,7 +74,62 @@ Commands.prototype.commands = function(data) {
|
|||||||
commands += '!' + __self.command_list[i];
|
commands += '!' + __self.command_list[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__self.irc.emit('message',{message:commands, options:{caller: __self.irc.caller(data[0]), auth: 1}});
|
console.log("!!!!! Right before EMIT");
|
||||||
|
__self.irc.emit('message',{message:commands, options:null});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Commands.prototype.add = function(command, text) {
|
||||||
|
var __self = this;
|
||||||
|
|
||||||
|
// escape string for sql sanity
|
||||||
|
var txt = text.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function(char) {
|
||||||
|
switch (char) {
|
||||||
|
case "\0":
|
||||||
|
return "\\0";
|
||||||
|
case "\x08":
|
||||||
|
return "\\b";
|
||||||
|
case "\x09":
|
||||||
|
return "\\t";
|
||||||
|
case "\x1a":
|
||||||
|
return "\\z";
|
||||||
|
case "\n":
|
||||||
|
return "\\n";
|
||||||
|
case "\r":
|
||||||
|
return "\\r";
|
||||||
|
case "\"":
|
||||||
|
case "'":
|
||||||
|
case "\\":
|
||||||
|
case "%":
|
||||||
|
return "\\"+char;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var sql = 'INSERT INTO commands (command, text) VALUES (\''+command+'\', \''+txt+'\');';
|
||||||
|
|
||||||
|
// add the command to the database
|
||||||
|
__self.db.execute(sql, function(data) {
|
||||||
|
var message = '> Add Command: !' + command + ' has been added.';
|
||||||
|
|
||||||
|
__self.command_list.push(command);
|
||||||
|
__self.irc.emit('message',{message:message, options:null});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
Commands.prototype.remove = function(command) {
|
||||||
|
var __self = this,
|
||||||
|
index = __self.command_list.indexOf(command);
|
||||||
|
|
||||||
|
if( index >= 0) {
|
||||||
|
var sql = 'DELETE FROM commands WHERE command=\''+command+'\';';
|
||||||
|
|
||||||
|
// remove the command from the database
|
||||||
|
__self.db.execute(sql, function(data) {
|
||||||
|
var message = '> Delete Command: !' + command + ' has been removed.';
|
||||||
|
|
||||||
|
__self.command_list.splice(index, 1);
|
||||||
|
__self.irc.emit('message',{message:message, options:null});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -63,11 +63,12 @@ var https = require('https'),
|
|||||||
utils = require('./utils.js');
|
utils = require('./utils.js');
|
||||||
|
|
||||||
//-------- Construct ---------
|
//-------- Construct ---------
|
||||||
function Currency(irc, db, options) {
|
function Currency(irc, db, commands, options) {
|
||||||
var __self = this;
|
var __self = this;
|
||||||
|
|
||||||
__self.irc = irc;
|
__self.irc = irc;
|
||||||
__self.db = db;
|
__self.db = db;
|
||||||
|
__self.custom_commands = commands;
|
||||||
|
|
||||||
// config
|
// config
|
||||||
__self.config = options || {};
|
__self.config = options || {};
|
||||||
@ -136,6 +137,10 @@ function Currency(irc, db, options) {
|
|||||||
// high score table
|
// high score table
|
||||||
__self.score_bet_pool = 0;
|
__self.score_bet_pool = 0;
|
||||||
__self.score_bet_single = 0;
|
__self.score_bet_single = 0;
|
||||||
|
|
||||||
|
// commands add/rem settings
|
||||||
|
__self.command_add_string = options.add_command || 'addcmd';
|
||||||
|
__self.command_remove_string = options.remove_command || 'removecmd';
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------- Methods ---------
|
//-------- Methods ---------
|
||||||
@ -173,6 +178,20 @@ Currency.prototype.commands = function (data) {
|
|||||||
|
|
||||||
// broadcaster only commands
|
// broadcaster only commands
|
||||||
if (broadcaster_bot_initiated || (__self.config.modpowers && moderator_initiated)) {
|
if (broadcaster_bot_initiated || (__self.config.modpowers && moderator_initiated)) {
|
||||||
|
//add / remove custom commands
|
||||||
|
if (data[4] === __self.command_add_string && data[5] !== undefined && data[6] !== undefined) {
|
||||||
|
var command = data[5];
|
||||||
|
var text = data.slice(6);
|
||||||
|
text = text.join(' ');
|
||||||
|
|
||||||
|
__self.custom_commands.add(command, text);
|
||||||
|
}
|
||||||
|
if (data[4] === __self.command_remove_string && data[5] !== undefined) {
|
||||||
|
var command = data[5];
|
||||||
|
|
||||||
|
__self.custom_commands.remove(command);
|
||||||
|
}
|
||||||
|
|
||||||
//open / close auction system
|
//open / close auction system
|
||||||
if (data[4] === 'auction') {
|
if (data[4] === 'auction') {
|
||||||
switch (data[5]) {
|
switch (data[5]) {
|
||||||
@ -1551,8 +1570,17 @@ Currency.prototype.bets = function(status, data) {
|
|||||||
if (__self.bets_viewers.length > 0) {
|
if (__self.bets_viewers.length > 0) {
|
||||||
__self.irc.emit('message', {message:__self.pre_text + 'Betting is now closed'});
|
__self.irc.emit('message', {message:__self.pre_text + 'Betting is now closed'});
|
||||||
for (var i = 0; i < __self.bets_board.length; i++) {
|
for (var i = 0; i < __self.bets_board.length; i++) {
|
||||||
__self.irc.emit('message', {message:'+ ' + __self.bets_board[i].name + ' with ' + __self.bets_board[i].num + ' bets totaling ' + __self.bets_board[i].total});
|
if(parseInt(__self.bets_board[i].total,10) > parseInt(__self.score_bet_pool, 10)) {
|
||||||
|
__self.score_bet_pool = __self.bets_board[i].total;
|
||||||
|
sql = 'INSERT INTO highscores (`value`, `name`) VALUES (\'' + __self.bets_board[i].total + '\', \'bet_pool\') ON DUPLICATE KEY UPDATE value=values(value);';
|
||||||
|
__self.db.execute(sql, function() {});
|
||||||
|
__self.irc.emit('message', {message:'+ ' + __self.bets_board[i].name + ' with ' + __self.bets_board[i].num + ' bets totaling ' + __self.bets_board[i].total + '. New record set!!'});
|
||||||
|
} else {
|
||||||
|
__self.irc.emit('message', {message:'+ ' + __self.bets_board[i].name + ' with ' + __self.bets_board[i].num + ' bets totaling ' + __self.bets_board[i].total});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
} else {
|
} else {
|
||||||
__self.irc.emit('message', {message:__self.pre_text + 'Betting closed, no bets were placed'});
|
__self.irc.emit('message', {message:__self.pre_text + 'Betting closed, no bets were placed'});
|
||||||
}
|
}
|
||||||
@ -1581,15 +1609,7 @@ Currency.prototype.bets = function(status, data) {
|
|||||||
for (var i = 0; i < __self.bets_board.length; i++) {
|
for (var i = 0; i < __self.bets_board.length; i++) {
|
||||||
if (data == __self.bets_board[i].name) {
|
if (data == __self.bets_board[i].name) {
|
||||||
__self.bets_award_winner(__self.bets_board[i]);
|
__self.bets_award_winner(__self.bets_board[i]);
|
||||||
if(__self.bets_board[i].total > __self.score_bet_pool) {
|
__self.irc.emit('message', {message:__self.pre_text + 'Betting payed out to ' + data});
|
||||||
sql = 'UPDATE highscores SET value = ' + __self.bets_board[i].total + ' WHERE name = \'bet_pool\'';
|
|
||||||
__self.db.execute(sql, function() {
|
|
||||||
__self.score_bet_pool = __self.bets_board[i].total;
|
|
||||||
__self.irc.emit('message', {message:__self.pre_text + 'Betting payed out to ' + data + '. New record set!!'});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
__self.irc.emit('message', {message:__self.pre_text + 'Betting payed out to ' + data});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1646,12 +1666,22 @@ Currency.prototype.collect_bets = function (caller, bet, amount) {
|
|||||||
for (var i = 0; i < __self.bets_flood.length; i++) {
|
for (var i = 0; i < __self.bets_flood.length; i++) {
|
||||||
bet = __self.bets_viewers[__self.bets_flood[i]];
|
bet = __self.bets_viewers[__self.bets_flood[i]];
|
||||||
multi_response[bet.bet].push(bet.viewer + ' (' + bet.amount + ')');
|
multi_response[bet.bet].push(bet.viewer + ' (' + bet.amount + ')');
|
||||||
|
|
||||||
|
// check for hiscore and set db appropriately
|
||||||
|
if ( parseInt(bet.amount, 10) > parseInt(__self.score_bet_single, 10) ) {
|
||||||
|
sql = 'INSERT INTO highscores (`value`, `user`, `name`) VALUES (\'' + amount + '\', \'' + caller + '\', \'bet_single\') ON DUPLICATE KEY UPDATE user=values(user), value=values(value);';
|
||||||
|
__self.db.execute(sql, function() {
|
||||||
|
__self.score_bet_single = amount;
|
||||||
|
__self.irc.emit('message', {message:__self.pre_text + ' ' + caller + ' set new record bet at ' + amount + '!'});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0; i < __self.bets_board.length; i++) {
|
for (var i = 0; i < __self.bets_board.length; i++) {
|
||||||
if (multi_response[i].length > 0) {
|
if (multi_response[i].length > 0) {
|
||||||
__self.irc.emit('message', {message:'New bets for ' + __self.bets_board[i].name + ': ' + multi_response[i].join(', '), timer: 1});
|
__self.irc.emit('message', {message:'New bets for ' + __self.bets_board[i].name + ': ' + multi_response[i].join(', '), timer: 1});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear flood requests
|
// clear flood requests
|
||||||
@ -1664,15 +1694,6 @@ Currency.prototype.collect_bets = function (caller, bet, amount) {
|
|||||||
amount = Math.min(amount, rows[i].points);
|
amount = Math.min(amount, rows[i].points);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check for hiscore and set db appropriately
|
|
||||||
if(amount > __self.score_bet_single) {
|
|
||||||
sql = 'UPDATE highscores SET value = ' + amount + ' WHERE name = \'bet_single\'';
|
|
||||||
__self.db.execute(sql, function() {
|
|
||||||
__self.score_bet_single = amount;
|
|
||||||
__self.irc.emit('message', {message:__self.pre_text + ' ' + caller + ' set new record bet at ' + amount + '!'});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__self.bets_viewers.length > 0) {
|
if (__self.bets_viewers.length > 0) {
|
||||||
for (var i = 0; i < __self.bets_viewers.length; i++) {
|
for (var i = 0; i < __self.bets_viewers.length; i++) {
|
||||||
if (__self.bets_viewers[i].viewer === caller) {
|
if (__self.bets_viewers[i].viewer === caller) {
|
||||||
@ -1779,6 +1800,6 @@ Currency.prototype.bets_award_winner = function (winner) {
|
|||||||
__self.bets_total = 0;
|
__self.bets_total = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = function (irc, db, options) {
|
module.exports = function (irc, db, commands, options) {
|
||||||
return new Currency(irc, db, options);
|
return new Currency(irc, db, commands, options);
|
||||||
};
|
};
|
||||||
|
@ -31,7 +31,7 @@ exports.initialize = function(options) {
|
|||||||
bot_name : config.twitch.bot.name,
|
bot_name : config.twitch.bot.name,
|
||||||
currency : config.currency.name
|
currency : config.currency.name
|
||||||
});
|
});
|
||||||
currency = require('./currency.js')(irc, db, {
|
currency = require('./currency.js')(irc, db, commands, {
|
||||||
currency : config.currency.name,
|
currency : config.currency.name,
|
||||||
payrate : config.currency.payrate,
|
payrate : config.currency.payrate,
|
||||||
subscribers : config.twitch.subscribers,
|
subscribers : config.twitch.subscribers,
|
||||||
|
@ -49,11 +49,11 @@ DB.prototype.start = function() {
|
|||||||
// table structure for table highscores
|
// table structure for table highscores
|
||||||
scores += 'CREATE TABLE IF NOT EXISTS `highscores` (';
|
scores += 'CREATE TABLE IF NOT EXISTS `highscores` (';
|
||||||
scores += '`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,';
|
scores += '`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,';
|
||||||
|
scores += '`user` varchar(64) COLLATE utf8_unicode_ci,';
|
||||||
scores += '`value` int(11) NOT NULL,';
|
scores += '`value` int(11) NOT NULL,';
|
||||||
|
scores += '`date` timestamp ON UPDATE current_timestamp,';
|
||||||
scores += 'PRIMARY KEY (`name`)';
|
scores += 'PRIMARY KEY (`name`)';
|
||||||
scores += ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;';
|
scores += ') ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;';
|
||||||
//scores += 'INSERT INTO `highscores` (`name`, `value`) VALUES(\'bet_single\', 0);';
|
|
||||||
//scores += 'INSERT INTO `highscores` (`name`, `value`) VALUES(\'bet_pool\', 0);';
|
|
||||||
|
|
||||||
// execute sql, create tables if they don't exist
|
// execute sql, create tables if they don't exist
|
||||||
__self.execute(commands + '; ' + viewers + '; ' + scores, function(){});
|
__self.execute(commands + '; ' + viewers + '; ' + scores, function(){});
|
||||||
|
20
web/public/css/app.css
Normal file
20
web/public/css/app.css
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
.uk-navbar-nav > li {
|
||||||
|
display: inline-block;
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uk-navbar-nav > li > a > img {
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flip {
|
||||||
|
-moz-transform: scaleX(-1);
|
||||||
|
-o-transform: scaleX(-1);
|
||||||
|
-webkit-transform: scaleX(-1);
|
||||||
|
transform: scaleX(-1);
|
||||||
|
filter: FlipH;
|
||||||
|
-ms-filter: "FlipH";
|
||||||
|
}
|
||||||
|
.uk-search-field, .uk-search-field::-moz-placeholder {
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user