Finalized !rank.
This commit is contained in:
parent
b45c8d7160
commit
31c089a7a8
147
lib/currency.js
147
lib/currency.js
@ -89,6 +89,10 @@ function Currency(irc, db, options) {
|
||||
__self.coin_toggle = false;
|
||||
__self.coin_toggle_msg = null;
|
||||
__self.coin_toggle_timer = 180000;//milliseconds
|
||||
__self.top_flood = [];
|
||||
__self.top_response_reset = true;
|
||||
__self.rank_flood = [];
|
||||
__self.rank_response_reset = true;
|
||||
|
||||
// auction settings
|
||||
__self.auction_status = false;
|
||||
@ -151,12 +155,17 @@ Currency.prototype.commands = function (data) {
|
||||
case 'on':
|
||||
__self.config.chatterbonus = true;
|
||||
__self.irc.emit('message', {message:__self.pre_text + 'Chatter bonus is on! Earn extra potatoes by being active in the chat.'});
|
||||
|
||||
break;
|
||||
case 'off':
|
||||
__self.config.chatterbonus = false;
|
||||
__self.irc.emit('message', {message:__self.pre_text + 'Chatterbonus is now off. Potato deflation!'});
|
||||
|
||||
break;
|
||||
case 'status':
|
||||
if(!__self.config.chatterbonus) {
|
||||
__self.irc.emit('message', {message:__self.pre_text + 'Chatterbonus is: Off'});
|
||||
} else {
|
||||
__self.irc.emit('message', {message:__self.pre_text + 'Chatterbonus is: On'});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -359,6 +368,15 @@ Currency.prototype.commands = function (data) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '!chatters':
|
||||
__self.irc.emit('message', {message:__self.pre_text + 'Active chatters: ' + __self.active_list.toString()});
|
||||
break;
|
||||
case '!top':
|
||||
__self.get_top(data[4]);
|
||||
break;
|
||||
case '!rank':
|
||||
__self.get_rank(__self.irc.caller(data[0]).toLowerCase());
|
||||
break;
|
||||
}
|
||||
|
||||
// place a bet
|
||||
@ -449,6 +467,126 @@ Currency.prototype.get_coins = function (caller) {
|
||||
}
|
||||
}
|
||||
};
|
||||
Currency.prototype.get_rank = function (data) {
|
||||
var __self = this;
|
||||
|
||||
function do_work() {
|
||||
|
||||
__self.query_rank(__self.rank_flood, function (ranks, total) {
|
||||
var response = '> Rank (of '+total+'): ';
|
||||
for(var i = 0; i < ranks.length; i++) {
|
||||
response += ranks[i]['user'] + ' ('+ranks[i]['@row_number:=@row_number+1']+'), ';
|
||||
}
|
||||
response = response.slice(1,-2);
|
||||
__self.irc.emit('message', {message: response, timer: 1});
|
||||
});
|
||||
|
||||
__self.rank_flood = [];
|
||||
}
|
||||
|
||||
// add flood users to array
|
||||
if (__self.rank_flood.indexOf(data) < 0) {
|
||||
__self.rank_flood.push(data);
|
||||
}
|
||||
|
||||
// clear timer on flood
|
||||
if (__self.rank_response_reset) {
|
||||
clearTimeout(__self.rank_response);
|
||||
}
|
||||
|
||||
// check if flood has hit max requests or set timer
|
||||
if (__self.rank_flood.length === __self.max_requests) {
|
||||
do_work();
|
||||
} else {
|
||||
if (__self.rank_response_reset) {
|
||||
__self.rank_response = setTimeout(function () {do_work();}, __self.coin_response_timer);
|
||||
} else {
|
||||
setTimeout(function () {do_work();}, __self.coin_response_timer);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Currency.prototype.get_top = function (data) {
|
||||
var __self = this;
|
||||
var limit = 0;
|
||||
|
||||
function do_work() {
|
||||
var response = '';
|
||||
|
||||
__self.query_top(__self.top_flood, function (rows) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
// setup response
|
||||
if (i !== rows.length - 1) {
|
||||
response += '#'+(i+1)+': ' + rows[i].user + '('+rows[i].points+'), ';
|
||||
} else {
|
||||
response += '#'+(i+1)+': ' + rows[i].user + '('+rows[i].points+')';
|
||||
}
|
||||
}
|
||||
__self.irc.emit('message', {message:'> Top Potato Farmers: ' + response});
|
||||
});
|
||||
|
||||
// clear flood requests
|
||||
__self.top_flood = [];
|
||||
}
|
||||
|
||||
// check that we got a number
|
||||
( isNaN(data) ) ? limit = 3 : limit = data;
|
||||
|
||||
// limit the number
|
||||
if (limit > 6) limit = 3;
|
||||
|
||||
// add flood users to array
|
||||
if (__self.top_flood.indexOf(limit) < 0) {
|
||||
__self.top_flood.push(limit);
|
||||
}
|
||||
|
||||
// clear timer on flood
|
||||
if (__self.top_response_reset) {
|
||||
clearTimeout(__self.top_response);
|
||||
}
|
||||
|
||||
// check if flood has hit max requests or set timer
|
||||
if (__self.top_flood.length === __self.max_requests) {
|
||||
do_work();
|
||||
} else {
|
||||
if (__self.top_response_reset) {
|
||||
__self.top_response = setTimeout(function () {do_work();}, __self.coin_response_timer);
|
||||
} else {
|
||||
setTimeout(function () {do_work();}, __self.coin_response_timer);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Currency.prototype.query_rank = function(data, callback) {
|
||||
var __self = this;
|
||||
var ranks = {}, total = 0;
|
||||
|
||||
var inner_sql = '', sql = 'set @row_number:=0;';
|
||||
data.forEach(function(user) {
|
||||
inner_sql += "user='"+user+"' or";
|
||||
});
|
||||
|
||||
// remove last or
|
||||
inner_sql=inner_sql.slice(0,-3);
|
||||
|
||||
sql += "select * from (select user, points, @row_number:=@row_number+1 from viewers order by points desc) as rank where ("+inner_sql+");select count(1) from viewers where points > 0;";
|
||||
__self.db.execute(sql, function(rows) {
|
||||
total = rows[2][0]['count(1)'];
|
||||
ranks = rows[1];
|
||||
|
||||
callback(ranks, total);
|
||||
});
|
||||
};
|
||||
|
||||
Currency.prototype.query_top = function (data, callback) {
|
||||
var __self = this, sql = '';
|
||||
|
||||
// build sql conditions
|
||||
sql = 'SELECT * FROM viewers ORDER BY points DESC LIMIT ' + data + ';';
|
||||
__self.db.execute(sql, function(rows) {
|
||||
callback(rows);
|
||||
});
|
||||
};
|
||||
|
||||
Currency.prototype.query_coins = function (data, callback) {
|
||||
var __self = this, sql = '';
|
||||
@ -503,11 +641,11 @@ Currency.prototype.query_coins = function (data, callback) {
|
||||
} else {
|
||||
rows[0].user = rows[0].user.charAt(0).toUpperCase() + rows[0].user.slice(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(rows);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* ============================================
|
||||
* HANDOUT CURRENCY
|
||||
@ -653,7 +791,6 @@ Currency.prototype.handout_coins = function () {
|
||||
}
|
||||
} else {
|
||||
__self.viewer_list = [];
|
||||
__self.active_list = [];
|
||||
}
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user