diff --git a/PBot/Commands.pm b/PBot/Commands.pm index 96d63638..897f8e20 100644 --- a/PBot/Commands.pm +++ b/PBot/Commands.pm @@ -102,6 +102,11 @@ sub interpreter { my $level = defined $admin ? $admin->{level} : 0; my $keyword = lc $stuff->{keyword}; + if (exists $stuff->{'effective-level'}) { + $self->{pbot}->{logger}->log("override level to $stuff->{'effective-level'}\n"); + $level = $stuff->{'effective-level'}; + } + foreach my $ref (@{ $self->{handlers} }) { if ($ref->{name} eq $keyword) { if ($level >= $ref->{level}) { diff --git a/PBot/Interpreter.pm b/PBot/Interpreter.pm index 947da3fe..536c18a2 100644 --- a/PBot/Interpreter.pm +++ b/PBot/Interpreter.pm @@ -650,6 +650,11 @@ sub process_command_queue { preserve_whitespace => 0 }; + if (exists $command->{level}) { + $self->{pbot}->{logger}->log("Override command effective-level to $command->{level}\n"); + $stuff->{'effective-level'} = $command->{level}; + } + my $result = $self->interpret($stuff); $stuff->{result} = $result; $self->handle_result($stuff, $result);