3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-26 13:59:47 +01:00

Factoids: use _name fields

This commit is contained in:
Pragmatic Software 2020-01-16 21:51:03 -08:00
parent 6f9133f982
commit 898a84c4f0

View File

@ -858,16 +858,23 @@ sub interpreter {
} }
} }
my $channel_name = $self->{factoids}->{hash}->{$channel}->{_name};
my $trigger_name = $self->{factoids}->{hash}->{$channel}->{$keyword}->{_name};
$channel_name = 'global' if $channel_name eq '.*';
$trigger_name = "\"$trigger_name\"" if $trigger_name =~ / /;
$stuff->{keyword} = $keyword; $stuff->{keyword} = $keyword;
$stuff->{trigger} = $keyword; $stuff->{trigger} = $keyword;
$stuff->{channel} = $channel; $stuff->{channel} = $channel;
$stuff->{original_keyword} = $original_keyword; $stuff->{original_keyword} = $original_keyword;
$stuff->{channel_name} = $channel_name;
$stuff->{trigger_name} = $trigger_name;
return undef if $stuff->{referenced} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{noembed}; return undef if $stuff->{referenced} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{noembed};
if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{locked_to_channel}) { if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{locked_to_channel}) {
if ($stuff->{ref_from} ne "") { # called from another channel if ($stuff->{ref_from} ne "") { # called from another channel
return "$keyword may be invoked only in $stuff->{ref_from}."; return "$trigger_name may be invoked only in $stuff->{ref_from}.";
} }
} }
@ -878,7 +885,7 @@ sub interpreter {
$ratelimit = $self->{factoids}->{hash}->{$channel}->{$keyword}->{rate_limit} if not defined $ratelimit; $ratelimit = $self->{factoids}->{hash}->{$channel}->{$keyword}->{rate_limit} if not defined $ratelimit;
if (gettimeofday - $self->{factoids}->{hash}->{$channel}->{$keyword}->{last_referenced_on} < $ratelimit) { if (gettimeofday - $self->{factoids}->{hash}->{$channel}->{$keyword}->{last_referenced_on} < $ratelimit) {
my $ref_from = $stuff->{ref_from} ? "[$stuff->{ref_from}] " : ""; my $ref_from = $stuff->{ref_from} ? "[$stuff->{ref_from}] " : "";
return "/msg $stuff->{nick} $ref_from'$keyword' is rate-limited; try again in " . duration ($ratelimit - int(gettimeofday - $self->{factoids}->{hash}->{$channel}->{$keyword}->{last_referenced_on})) . "." unless $self->{pbot}->{admins}->loggedin($channel, "$stuff->{nick}!$stuff->{user}\@$stuff->{host}"); return "/msg $stuff->{nick} $ref_from'$trigger_name' is rate-limited; try again in " . duration ($ratelimit - int(gettimeofday - $self->{factoids}->{hash}->{$channel}->{$keyword}->{last_referenced_on})) . "." unless $self->{pbot}->{admins}->loggedin($channel, "$stuff->{nick}!$stuff->{user}\@$stuff->{host}");
} }
} }
} }
@ -894,7 +901,7 @@ sub interpreter {
if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage} and not length $stuff->{arguments} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{requires_arguments}) { if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage} and not length $stuff->{arguments} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{requires_arguments}) {
$stuff->{alldone} = 1; $stuff->{alldone} = 1;
my $usage = $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage}; my $usage = $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage};
$usage =~ s/\$0|\$\{0\}/$keyword/g; $usage =~ s/\$0|\$\{0\}/$trigger_name/g;
return $usage; return $usage;
} }
@ -910,7 +917,7 @@ sub interpreter {
if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage} and not length $stuff->{arguments}) { if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage} and not length $stuff->{arguments}) {
$stuff->{alldone} = 1; $stuff->{alldone} = 1;
my $usage = $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage}; my $usage = $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage};
$usage =~ s/\$0|\$\{0\}/$keyword/g; $usage =~ s/\$0|\$\{0\}/$trigger_name/g;
return $usage; return $usage;
} }
@ -936,8 +943,7 @@ sub handle_action {
return "" if not length $action; return "" if not length $action;
my ($channel, $keyword) = ($stuff->{channel}, $stuff->{trigger}); my ($channel, $keyword) = ($stuff->{channel}, $stuff->{trigger});
my $keyword_text = $keyword =~ / / ? "\"$keyword\"" : $keyword; my ($channel_name, $trigger_name) = ($stuff->{channel_name}, $stuff->{trigger_name});
my $ref_from = $stuff->{ref_from} ? "[$stuff->{ref_from}] " : ""; my $ref_from = $stuff->{ref_from} ? "[$stuff->{ref_from}] " : "";
unless (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} eq '0') { unless (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} eq '0') {
@ -979,7 +985,7 @@ sub handle_action {
# no arguments supplied, replace $args with $nick/$tonick, etc # no arguments supplied, replace $args with $nick/$tonick, etc
if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage}) { if (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage}) {
$action = "/say " . $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage}; $action = "/say " . $self->{factoids}->{hash}->{$channel}->{$keyword}->{usage};
$action =~ s/\$0|\$\{0\}/$keyword/g; $action =~ s/\$0|\$\{0\}/$trigger_name/g;
$stuff->{alldone} = 1; $stuff->{alldone} = 1;
} else { } else {
if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'allow_empty_args'}) { if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'allow_empty_args'}) {
@ -992,7 +998,7 @@ sub handle_action {
} }
# Check if it's an alias # Check if it's an alias
if ($action =~ /^\/call\s+(.*)$/ms) { if ($action =~ /^\/call\s+(.*)$/msi) {
my $command = $1; my $command = $1;
$command =~ s/\n$//; $command =~ s/\n$//;
unless ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'require_explicit_args'}) { unless ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'require_explicit_args'}) {
@ -1010,7 +1016,7 @@ sub handle_action {
$stuff->{command} = $command; $stuff->{command} = $command;
$stuff->{aliased} = 1; $stuff->{aliased} = 1;
$self->{pbot}->{logger}->log("[" . (defined $stuff->{from} ? $stuff->{from} : "stdin") . "] ($stuff->{nick}!$stuff->{user}\@$stuff->{host}) [$keyword_text] aliased to: [$command]\n"); $self->{pbot}->{logger}->log("[" . (defined $stuff->{from} ? $stuff->{from} : "stdin") . "] ($stuff->{nick}!$stuff->{user}\@$stuff->{host}) $trigger_name aliased to: $command\n");
if (defined $self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'}) { if (defined $self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'}) {
if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'locked'}) { if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'locked'}) {
@ -1024,11 +1030,11 @@ sub handle_action {
return $self->{pbot}->{interpreter}->interpret($stuff); return $self->{pbot}->{interpreter}->interpret($stuff);
} }
$self->{pbot}->{logger}->log("(" . (defined $stuff->{from} ? $stuff->{from} : "(undef)") . "): $stuff->{nick}!$stuff->{user}\@$stuff->{host}: $keyword_text: action: \"$action\"\n"); $self->{pbot}->{logger}->log("(" . (defined $stuff->{from} ? $stuff->{from} : "(undef)") . "): $stuff->{nick}!$stuff->{user}\@$stuff->{host}: $trigger_name: action: \"$action\"\n");
if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{enabled} == 0) { if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{enabled} == 0) {
$self->{pbot}->{logger}->log("$keyword_text disabled.\n"); $self->{pbot}->{logger}->log("$trigger_name disabled.\n");
return "/msg $stuff->{nick} ${ref_from}$keyword_text is currently disabled."; return "/msg $stuff->{nick} ${ref_from}$trigger_name is currently disabled.";
} }
unless (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} eq '0') { unless (exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} and $self->{factoids}->{hash}->{$channel}->{$keyword}->{interpolate} eq '0') {
@ -1073,7 +1079,7 @@ sub handle_action {
my $admin = $self->{pbot}->{admins}->loggedin($stuff->{from}, "$stuff->{nick}!$stuff->{user}\@$stuff->{host}"); my $admin = $self->{pbot}->{admins}->loggedin($stuff->{from}, "$stuff->{nick}!$stuff->{user}\@$stuff->{host}");
if (not $admin or $admin->{level} < 60) { if (not $admin or $admin->{level} < 60) {
$self->{pbot}->{logger}->log("[ABUSE] Bad factoid (contains /msg): $action\n"); $self->{pbot}->{logger}->log("[ABUSE] Bad factoid (contains /msg): $action\n");
return "You are not powerful enough to do this."; return "You are not powerful enough to use /msg in a factoid.";
} }
} }
@ -1082,7 +1088,7 @@ sub handle_action {
|| $action =~ s/^\/msg\s+([^ ]+)/\/msg $1 $ref_from/i) { || $action =~ s/^\/msg\s+([^ ]+)/\/msg $1 $ref_from/i) {
return $action; return $action;
} else { } else {
return $ref_from . "$keyword_text is $action"; return $ref_from . "$trigger_name is $action";
} }
} else { } else {
if ($action =~ m/^\/(?:say|me|msg)/i) { if ($action =~ m/^\/(?:say|me|msg)/i) {
@ -1090,7 +1096,7 @@ sub handle_action {
} elsif ($action =~ s/^\/kick\s+//) { } elsif ($action =~ s/^\/kick\s+//) {
if (not exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'}) { if (not exists $self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'}) {
$stuff->{authorized} = 0; $stuff->{authorized} = 0;
return "/say $stuff->{nick}: $keyword_text doesn't have the effective-level to do that."; return "/say $stuff->{nick}: $trigger_name doesn't have the effective-level to do that.";
} }
my $level = 10; my $level = 10;
if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'} >= $level) { if ($self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'} >= $level) {
@ -1101,7 +1107,7 @@ sub handle_action {
return "/say $stuff->{nick}: My effective-level isn't high enough to do that."; return "/say $stuff->{nick}: My effective-level isn't high enough to do that.";
} }
} else { } else {
return "/say $keyword_text is $action"; return "/say $trigger_name is $action";
} }
} }
} elsif ($self->{factoids}->{hash}->{$channel}->{$keyword}->{type} eq 'regex') { } elsif ($self->{factoids}->{hash}->{$channel}->{$keyword}->{type} eq 'regex') {
@ -1144,7 +1150,7 @@ sub handle_action {
return ""; return "";
} }
} else { } else {
$self->{pbot}->{logger}->log("($stuff->{from}): $stuff->{nick}!$stuff->{user}\@$stuff->{host}): Unknown command type for '$keyword_text'\n"); $self->{pbot}->{logger}->log("($stuff->{from}): $stuff->{nick}!$stuff->{user}\@$stuff->{host}): Unknown command type for '$trigger_name'\n");
return "/me blinks." . " $ref_from"; return "/me blinks." . " $ref_from";
} }
} }