Skip to content

Commit 2412cef

Browse files
committed
Reworked karma support
1 parent f488057 commit 2412cef

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

lib/GeckBot/Plugins/Karma.pm

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ sub said
1515
return;
1616
}
1717
$key =~ s/^\W*(\w+)\W*$/$1/g;
18-
return if $key eq $said_hr->{'who'};
1918
my $channel_id = $self->get_channel_id($said_hr->{'channel'});
20-
my $value = change_value($self, $operation, $channel_id, $key);
19+
my $value = change_value($self, $operation, $channel_id, $key, 1);
2120
return "Karma for $key is now " . $value;
2221
}
2322
return;
@@ -32,30 +31,43 @@ sub get_karma
3231
{
3332
my ($self, $said_hr) = @_;
3433

35-
my $key = $said_hr->{'body'};
36-
my $result = $self->schema->resultset('Karma')->find(
37-
{
38-
'channel_id' => $self->get_channel_id($said_hr->{'channel'}),
39-
'key' => $key,
40-
},
41-
);
42-
my $value = defined $result ? $result->value : 0;
34+
my ( $key, $operation ) = split /\s/, $said_hr->{'body'}, 2;
35+
36+
my $channel_id = $self->get_channel_id($said_hr->{'channel'});
37+
my $value;
38+
39+
if ( defined $operation && $operation =~ /\s*\+\s*(\d+)/) {
40+
$value = change_value($self, '++', $channel_id, $key, $1);
41+
}
42+
elsif ( defined $operation && $operation =~ /\s*\-\s*(\d+)/) {
43+
$value = change_value($self, --, $channel_id, $key, $1);
44+
}
45+
else {
46+
my $result = $self->schema->resultset('Karma')->find(
47+
{
48+
'channel_id' => $channel_id,
49+
'key' => $key,
50+
},
51+
);
52+
$value = defined $result ? $result->value : 0;
53+
}
54+
4355
return "$key has $value karma";
4456

4557
}
4658

4759
sub change_value
4860
{
49-
my ($self, $operation, $channel_id, $key) = @_;
61+
my ($self, $operation, $channel_id, $key, $value) = @_;
5062
my $value;
5163
my $karma =
5264
$self->schema->resultset('Channel')->find({ 'id' => $channel_id })
5365
->karma->find_or_new({ key => $key });
5466
if ($operation eq '++') {
55-
$karma->value($karma->value + 1);
67+
$karma->value($karma->value + $value);
5668
}
5769
else {
58-
$karma->value($karma->value - 1);
70+
$karma->value($karma->value - $value);
5971
}
6072
$karma->insert_or_update;
6173
return $karma->value;

0 commit comments

Comments
 (0)