diff --git a/data/factoids b/data/factoids index 4e1c13a1..1795f4ff 100644 --- a/data/factoids +++ b/data/factoids @@ -1555,12 +1555,12 @@ created_on: 1104378101 edited_by: edk!edk@unaffiliated/edk edited_on: 1387226590.5671 enabled: 1 -last_referenced_in: stanley00 -last_referenced_on: 1421891263.57892 +last_referenced_in: ##c +last_referenced_on: 1422455477.60646 owner: twkm rate_limit: 15 -ref_count: 763 -ref_user: Stanley00!~Stanley_0@unaffiliated/stanley00 +ref_count: 764 +ref_user: boru!~boru@unaffiliated/boru type: text @@ -3348,11 +3348,11 @@ edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1408958407.27181 enabled: 1 last_referenced_in: ##c -last_referenced_on: 1421981855.05645 +last_referenced_on: 1422460235.626 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 35 -ref_user: Chris!~chris@unaffiliated/chris +ref_count: 36 +ref_user: pestle!~pestle@oscar.grumpl.com type: text @@ -7677,12 +7677,12 @@ action: /say $nick, $answers action_with_args: /say $nick, $answers created_on: 1193948417 enabled: 1 -last_referenced_in: #cjeopardy -last_referenced_on: 1422419024.31871 +last_referenced_in: ##c +last_referenced_on: 1422465228.10466 owner: pragma_ rate_limit: 0 -ref_count: 1599 -ref_user: qnavry!~zyxwvuts@unaffiliated/qnavry +ref_count: 1601 +ref_user: fstd!~fstd@unaffiliated/fisted type: text <:(> @@ -9032,11 +9032,11 @@ type: text action: /call 8ball created_on: 1379357523.89776 enabled: 1 -last_referenced_on: 1421973377.70739 +last_referenced_on: 1422465228.10135 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 10 -ref_user: [c]o[d]e[b]l[0]c!~Jeremy@67.210.157.104 +ref_count: 11 +ref_user: fstd!~fstd@unaffiliated/fisted type: text @@ -9104,12 +9104,12 @@ action: c11std.pl created_on: 1326727233.54048 enabled: 1 last_referenced_in: ##c -last_referenced_on: 1422414346.56961 +last_referenced_on: 1422462885.27763 nooverride: 1 owner: pragma_ rate_limit: 0 -ref_count: 1918 -ref_user: doppel!~doppel@ip68-96-169-47.lv.lv.cox.net +ref_count: 1921 +ref_user: w41!~w41@unaffiliated/w41 type: module @@ -9257,12 +9257,12 @@ created_on: 1272176634 edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1393967703.12375 enabled: 1 -last_referenced_on: 1422430564.94435 +last_referenced_on: 1422474634.08681 owner: pragma_ preserve_whitespace: 1 rate_limit: 4 -ref_count: 47737 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 47776 +ref_user: kate!~kate@unaffiliated/kate type: text @@ -9414,12 +9414,12 @@ created_on: 1406470585.35501 edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1406470904.86333 enabled: 1 -last_referenced_on: 1422427362.92225 +last_referenced_on: 1422446569.09091 modulelauncher_subpattern: s/(\S+)\\ (\S+)\\ /a b / nooverride: 1 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 452 +ref_count: 461 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: text @@ -9428,15 +9428,15 @@ action: cjeopardy_answer.pl add_nick: 1 created_on: 1406470549.13778 enabled: 1 -last_referenced_in: #pbot2-test -last_referenced_on: 1422426373.36751 +last_referenced_in: #cjeopardy +last_referenced_on: 1422471171.58681 modulelauncher_subpattern: s/(\S+)\\ (\S+)\\ /$1 $2 / nooverride: 1 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos preserve_whitespace: 1 rate_limit: 0 -ref_count: 11486 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 11596 +ref_user: fstd!~fstd@unaffiliated/fisted type: module unquote_spaces: 1 workdir: cjeopardy @@ -9446,13 +9446,13 @@ action: cjeopardy_hint.pl add_nick: 1 created_on: 1406653901.63156 enabled: 1 -last_referenced_in: #pbot2-test -last_referenced_on: 1422430664.76704 +last_referenced_in: #cjeopardy +last_referenced_on: 1422442492.90861 modulelauncher_subpattern: s/(\S+)\\ (\S+)/$1 $2/ nooverride: 1 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 0 -ref_count: 2240 +ref_count: 2247 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: module unquote_spaces: 1 @@ -9463,14 +9463,31 @@ action: cjeopardy.pl add_nick: 1 created_on: 1406470527.29871 enabled: 1 -last_referenced_in: #pbot2-test -last_referenced_on: 1422427362.92403 +last_referenced_in: #cjeopardy +last_referenced_on: 1422446569.09162 modulelauncher_subpattern: s/(\S+)\\ (\S+)/$1 $2/ nooverride: 1 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos preserve_whitespace: 1 rate_limit: 0 -ref_count: 466 +ref_count: 475 +ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +type: module +unquote_spaces: 1 +workdir: cjeopardy + + +action: cjeopardy_scores.pl +add_nick: 1 +created_on: 1422478842.39069 +enabled: 1 +last_referenced_in: #pbot2-test +last_referenced_on: 1422479113.76094 +modulelauncher_subpattern: s/(\S+)\\ (\S+)\\ /$1 $2 /; +nooverride: 1 +owner: pragma-!~chaos@unaffiliated/pragmatic-chaos +rate_limit: 0 +ref_count: 7 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: module unquote_spaces: 1 @@ -9659,15 +9676,15 @@ type: text action: compiler_client.pl created_on: 1291939583.25391 enabled: 1 -last_referenced_in: #pbot2-test -last_referenced_on: 1422430564.94482 +last_referenced_in: ##c +last_referenced_on: 1422474634.08901 modulelauncher_subpattern: s/(\S+)\\ (\S+)(?:\\ )*/$1 $2 / nooverride: 1 owner: pragma_ preserve_whitespace: 1 rate_limit: 0 -ref_count: 40456 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 40495 +ref_user: kate!~kate@unaffiliated/kate type: module @@ -10969,12 +10986,12 @@ type: text action: /say $hi_phrases, $args created_on: 1109044278 enabled: 1 -last_referenced_in: #pbot2-test -last_referenced_on: 1422426452.09035 +last_referenced_in: ##c +last_referenced_on: 1422468183.14899 owner: pragma_ rate_limit: 15 -ref_count: 1590 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 1591 +ref_user: cartnam!~cartnam@109.97.119.176 type: text @@ -10993,10 +11010,10 @@ created_on: 1406653962.70469 edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1422425509.62943 enabled: 1 -last_referenced_on: 1422430664.7654 +last_referenced_on: 1422442492.90702 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 2249 +ref_count: 2256 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: text @@ -12964,6 +12981,16 @@ ref_count: 1 ref_user: pragma- type: text + +action: /call cjeopardy_scores_module $nick $channel reset +created_on: 1422479150.06886 +enabled: 1 +owner: pragma-!~chaos@unaffiliated/pragmatic-chaos +rate_limit: 15 +ref_count: 0 +ref_user: nobody +type: text + action: /call insult created_on: 1237170413 @@ -13259,6 +13286,17 @@ ref_count: 11 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: text + +action: /call cjeopardy_scores_module $nick $channel score +created_on: 1422478940.91347 +enabled: 1 +last_referenced_on: 1422479113.75874 +owner: pragma-!~chaos@unaffiliated/pragmatic-chaos +rate_limit: 15 +ref_count: 8 +ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +type: text + action: /call insult $nick created_on: 1344228114.59734 @@ -13403,10 +13441,10 @@ type: regex action: /call factshow created_on: 1277259146.86343 enabled: 1 -last_referenced_on: 1422426272.93486 +last_referenced_on: 1422478910.1148 owner: pbot3 rate_limit: 15 -ref_count: 356 +ref_count: 358 ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos type: text @@ -13791,10 +13829,10 @@ created_on: 1341097083.07635 edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1421453009.34989 enabled: 1 -last_referenced_on: 1422429827.74187 +last_referenced_on: 1422474634.08355 owner: pragma- rate_limit: 15 -ref_count: 455 +ref_count: 465 ref_user: kate!~kate@unaffiliated/kate type: text @@ -14088,10 +14126,10 @@ action: /say For all your makefile/scripting/toolchain needs, please join ##work created_on: 1289691889.26701 enabled: 1 last_referenced_in: ##c-unregistered -last_referenced_on: 1421993138.22203 +last_referenced_on: 1422451259.30687 owner: PoppaVic rate_limit: 15 -ref_count: 144 +ref_count: 145 ref_user: Seabasschan!~Seabassch@unaffiliated/seabasschan type: text @@ -14462,11 +14500,11 @@ type: text action: /call what created_on: 1406663700.94145 enabled: 1 -last_referenced_on: 1422426373.3662 +last_referenced_on: 1422471171.58288 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 6964 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 7074 +ref_user: fstd!~fstd@unaffiliated/fisted type: text @@ -14588,12 +14626,12 @@ created_on: 1406470658.61024 edited_by: pragma-!~chaos@unaffiliated/pragmatic-chaos edited_on: 1422426290.87004 enabled: 1 -last_referenced_on: 1422426373.36664 +last_referenced_on: 1422471171.58557 nooverride: 1 owner: pragma-!~chaos@unaffiliated/pragmatic-chaos rate_limit: 15 -ref_count: 11491 -ref_user: pragma-!~chaos@unaffiliated/pragmatic-chaos +ref_count: 11601 +ref_user: fstd!~fstd@unaffiliated/fisted type: text diff --git a/modules/cjeopardy/Scorekeeper.pm b/modules/cjeopardy/Scorekeeper.pm index be19d6b8..1e50b301 100644 --- a/modules/cjeopardy/Scorekeeper.pm +++ b/modules/cjeopardy/Scorekeeper.pm @@ -33,8 +33,8 @@ sub begin { $self->{dbh}->do(<< 'SQL'); CREATE TABLE IF NOT EXISTS Scores ( id INTEGER PRIMARY KEY, - nick TEXT NOT NULL, - channel TEXT NOT NULL, + nick TEXT NOT NULL COLLATE NOCASE, + channel TEXT NOT NULL COLLATE NOCASE, correct_answers INTEGER DEFAULT 0, wrong_answers INTEGER DEFAULT 0, lifetime_correct_answers INTEGER DEFAULT 0, @@ -84,7 +84,7 @@ sub add_player { } sub get_player_id { - my ($self, $nick, $channel) = @_; + my ($self, $nick, $channel, $dont_create_new) = @_; my $id = eval { my $sth = $self->{dbh}->prepare('SELECT id FROM Scores WHERE nick = ? AND channel = ?'); @@ -97,7 +97,7 @@ sub get_player_id { print STDERR $@ if $@; - $id = $self->add_player($nick, $channel) if not defined $id; + $id = $self->add_player($nick, $channel) if not defined $id and not $dont_create_new; return $id; } @@ -151,6 +151,7 @@ sub update_player_data { $sth->bind_param($param, $id); $sth->execute(); }; + print STDERR $@ if $@; } sub get_all_correct_streaks { diff --git a/modules/cjeopardy/cjeopardy_scores.pl b/modules/cjeopardy/cjeopardy_scores.pl new file mode 100755 index 00000000..b1be093c --- /dev/null +++ b/modules/cjeopardy/cjeopardy_scores.pl @@ -0,0 +1,65 @@ +#!/usr/bin/env perl + +use warnings; +use strict; + +use Time::HiRes qw(gettimeofday); + +use Scorekeeper; +use IRCColors; + +my $hint_only_mode = 0; + +my $nick = shift @ARGV; +my $channel = shift @ARGV; +my $command = shift @ARGV; +my $opt_nick = shift @ARGV; + +if ($channel !~ /^#/) { + print "Sorry, C Jeopardy must be played in a channel. Feel free to join #cjeopardy.\n"; + exit; +} + +my $scores = Scorekeeper->new; +$scores->begin; + +my $player_nick = $nick; +$player_nick = $opt_nick if defined $opt_nick and lc $command eq 'score'; + +my $player_id = $scores->get_player_id($player_nick, $channel, 1); + +if (not defined $player_id) { + print "I don't know anybody named $player_nick\n"; + goto END; +} + +my $player_data = $scores->get_player_data($player_id); + +if (lc $command eq 'score') { + my $score = "$color{orange}$player_data->{nick}$color{reset}: "; + + $score .= "$color{green}correct: $color{orange}$player_data->{correct_answers}" . ($player_data->{lifetime_correct_answers} > $player_data->{correct_answers} ? " [$player_data->{lifetime_correct_answers}]" : "") . "$color{green}, "; + $score .= "current streak: $color{orange}$player_data->{correct_streak}$color{green}, "; + $score .= "$color{green}highest streak: $color{orange}$player_data->{highest_correct_streak}" . ($player_data->{lifetime_highest_correct_streak} > $player_data->{highest_correct_streak} ? " [$player_data->{lifetime_highest_correct_streak}]" : "") . "$color{green}, "; + + $score .= "$color{red}wrong: $color{orange}$player_data->{wrong_answers}" . ($player_data->{lifetime_wrong_answers} > $player_data->{wrong_answers} ? " [$player_data->{lifetime_wrong_answers}]" : "") . "$color{red}, "; + $score .= "current streak: $color{orange}$player_data->{wrong_streak}$color{red}, "; + $score .= "$color{red}highest streak: $color{orange}$player_data->{highest_wrong_streak}" . ($player_data->{lifetime_highest_wrong_streak} > $player_data->{highest_wrong_streak} ? " [$player_data->{lifetime_highest_wrong_streak}]" : "") . "$color{red}, "; + + $score .= "$color{lightgreen}hints: $color{orange}$player_data->{hints}" . ($player_data->{lifetime_hints} > $player_data->{hints} ? " [$player_data->{lifetime_hints}]" : "") . "$color{reset}\n"; + + print $score; +} elsif (lc $command eq 'reset') { + $player_data->{correct_answers} = 0; + $player_data->{wrong_answers} = 0; + $player_data->{correct_streak} = 0; + $player_data->{wrong_streak} = 0; + $player_data->{highest_correct_streak} = 0; + $player_data->{highest_wrong_streak} = 0; + $player_data->{hints} = 0; + $scores->update_player_data($player_id, $player_data); + print "Your scores for this session have been reset.\n"; +} + +END: +$scores->end;