mirror of
https://github.com/pragma-/pbot.git
synced 2025-01-23 10:34:52 +01:00
Improve nick-prefix/override
This commit is contained in:
parent
725808ebe3
commit
7e061741da
@ -110,6 +110,7 @@ sub interpreter {
|
||||
foreach my $ref (@{ $self->{handlers} }) {
|
||||
if ($ref->{name} eq $keyword) {
|
||||
if ($level >= $ref->{level}) {
|
||||
$stuff->{no_nickoverride} = 1;
|
||||
my $result = &{ $ref->{subref} }($stuff->{from}, $stuff->{nick}, $stuff->{user}, $stuff->{host}, $stuff->{arguments}, $stuff);
|
||||
if ($stuff->{referenced}) {
|
||||
return undef if $result =~ m/(?:usage:|no results)/i;
|
||||
|
@ -213,6 +213,8 @@ sub module_pipe_reader {
|
||||
# don't override nick if already set
|
||||
if (exists $stuff->{special} and $stuff->{special} ne 'code-factoid' and exists $self->{pbot}->{factoids}->{factoids}->hash->{$stuff->{channel}}->{$stuff->{trigger}}->{add_nick} and $self->{pbot}->{factoids}->{factoids}->hash->{$stuff->{channel}}->{$stuff->{trigger}}->{add_nick} != 0) {
|
||||
$stuff->{nickoverride} = $stuff->{nick};
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
$stuff->{force_nickoverride} = 1;
|
||||
} else {
|
||||
# extract nick-like thing from module result
|
||||
if ($stuff->{result} =~ s/^(\S+): //) {
|
||||
|
@ -700,8 +700,15 @@ sub execute_code_factoid_using_vm {
|
||||
my ($self, $stuff) = @_;
|
||||
|
||||
unless (exists $self->{factoids}->hash->{$stuff->{channel}}->{$stuff->{keyword}}->{interpolate} and $self->{factoids}->hash->{$stuff->{channel}}->{$stuff->{keyword}}->{interpolate} eq '0') {
|
||||
if ($stuff->{code} =~ m/(?:\$nick\b|\$args\b|\$arg\[)/ and length $stuff->{arguments}) {
|
||||
$stuff->{no_nickoverride} = 1;
|
||||
} else {
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
}
|
||||
$stuff->{code} = $self->expand_factoid_vars($stuff->{from}, $stuff->{nick}, $stuff->{root_keyword}, $stuff->{code});
|
||||
$stuff->{code} = $self->expand_action_arguments($stuff->{code}, $stuff->{arguments}, $stuff->{nick});
|
||||
} else {
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
}
|
||||
|
||||
my %h = (nick => $stuff->{nick}, channel => $stuff->{from}, lang => $stuff->{lang}, code => $stuff->{code}, arguments => $stuff->{arguments}, factoid => "$stuff->{channel}:$stuff->{keyword}");
|
||||
@ -842,8 +849,6 @@ sub interpreter {
|
||||
}
|
||||
}
|
||||
|
||||
my $type = $self->{factoids}->hash->{$channel}->{$keyword}->{type};
|
||||
|
||||
$self->{factoids}->hash->{$channel}->{$keyword}->{ref_count}++;
|
||||
$self->{factoids}->hash->{$channel}->{$keyword}->{ref_user} = "$stuff->{nick}!$stuff->{user}\@$stuff->{host}";
|
||||
$self->{factoids}->hash->{$channel}->{$keyword}->{last_referenced_on} = gettimeofday;
|
||||
@ -890,6 +895,9 @@ sub handle_action {
|
||||
if ($action =~ m/\$args/ or $action =~ m/\$arg\[/) {
|
||||
unless (defined $self->{factoids}->hash->{$channel}->{$keyword}->{interpolate} and $self->{factoids}->hash->{$channel}->{$keyword}->{interpolate} eq '0') {
|
||||
$action = $self->expand_action_arguments($action, $stuff->{arguments}, $stuff->{nick});
|
||||
$stuff->{no_nickoverride} = 1;
|
||||
} else {
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
}
|
||||
$stuff->{arguments} = "";
|
||||
} else {
|
||||
@ -899,12 +907,16 @@ sub handle_action {
|
||||
|
||||
if ($target and $action !~ /\$(?:nick|args)\b/) {
|
||||
$stuff->{nickoverride} = $target unless $stuff->{force_nickoverride};
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
} else {
|
||||
$stuff->{no_nickoverride} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
# no arguments supplied, replace $args with $nick/$tonick, etc
|
||||
$action = $self->expand_action_arguments($action, undef, $stuff->{nick});
|
||||
$stuff->{no_nickoverride} = 0;
|
||||
}
|
||||
|
||||
# Check if it's an alias
|
||||
@ -913,6 +925,7 @@ sub handle_action {
|
||||
$command .= " $stuff->{arguments}" if length $stuff->{arguments};
|
||||
|
||||
$stuff->{command} = $command;
|
||||
$stuff->{aliased} = 1;
|
||||
|
||||
$self->{pbot}->{logger}->log("[" . (defined $stuff->{from} ? $stuff->{from} : "stdin") . "] ($stuff->{nick}!$stuff->{user}\@$stuff->{host}) [$keyword] aliased to: [$command]\n");
|
||||
return $self->{pbot}->{interpreter}->interpret($stuff);
|
||||
|
@ -186,6 +186,7 @@ sub process_line {
|
||||
$stuff->{text} = $text;
|
||||
$stuff->{command} = $command;
|
||||
$stuff->{nickoverride} = $nick_override if $nick_override;
|
||||
$stuff->{force_nickoverride} = 1 if $nick_override;
|
||||
$stuff->{referenced} = $embedded;
|
||||
$stuff->{interpret_depth} = 1;
|
||||
$stuff->{preserve_whitespace} = $preserve_whitespace;
|
||||
@ -511,7 +512,8 @@ sub output_result {
|
||||
return if not defined $line or not length $line;
|
||||
|
||||
if ($line =~ s/^\/say\s+//i) {
|
||||
if (defined $stuff->{nickoverride}) {
|
||||
|
||||
if (defined $stuff->{nickoverride} and ($stuff->{no_nickoverride} == 0 or $stuff->{force_nickoverride} == 1)) {
|
||||
$line = "$stuff->{nickoverride}: $line";
|
||||
}
|
||||
$pbot->{conn}->privmsg($stuff->{from}, $line) if defined $stuff->{from} && $stuff->{from} !~ /\Q$botnick\E/i;
|
||||
@ -536,7 +538,7 @@ sub output_result {
|
||||
$pbot->{antiflood}->check_flood($to, $botnick, $pbot->{registry}->get_value('irc', 'username'), 'localhost', '/me ' . $line, 0, 0, 0) if $stuff->{checkflood};
|
||||
} else {
|
||||
$line =~ s/^\/say\s+//i;
|
||||
if (defined $stuff->{nickoverride}) {
|
||||
if (defined $stuff->{nickoverride} and ($stuff->{no_nickoverride} == 0 or $stuff->{force_nickoverride} == 1)) {
|
||||
$line = "$stuff->{nickoverride}: $line";
|
||||
}
|
||||
$pbot->{conn}->privmsg($to, $line) if $to !~ /\Q$botnick\E/i;
|
||||
@ -564,7 +566,7 @@ sub output_result {
|
||||
$pbot->{conn}->privmsg($stuff->{from}, "$victim: $reason") if defined $stuff->{from} && $stuff->{from} !~ /\Q$botnick\E/i;
|
||||
}
|
||||
} else {
|
||||
if (defined $stuff->{nickoverride}) {
|
||||
if (defined $stuff->{nickoverride} and ($stuff->{no_nickoverride} == 0 or $stuff->{force_nickoverride} == 1)) {
|
||||
$line = "$stuff->{nickoverride}: $line";
|
||||
}
|
||||
$pbot->{conn}->privmsg($stuff->{from}, $line) if defined $stuff->{from} && $stuff->{from} !~ /\Q$botnick\E/i;
|
||||
|
Loading…
Reference in New Issue
Block a user