diff --git a/PBot/Commands.pm b/PBot/Commands.pm index 36d74749..b0b24450 100644 --- a/PBot/Commands.pm +++ b/PBot/Commands.pm @@ -74,6 +74,16 @@ sub unregister_by_name { @{ $self->{handlers} } = grep { $_->{name} ne $name } @{ $self->{handlers} }; } +sub exists { + my $self = shift; + my ($keyword) = @_; + + foreach my $ref (@{ $self->{handlers} }) { + return 1 if $ref->{name} eq $keyword; + } + return 0; +} + sub interpreter { my $self = shift; my ($from, $nick, $user, $host, $depth, $keyword, $arguments, $tonick) = @_; diff --git a/PBot/Factoids.pm b/PBot/Factoids.pm index 138a4fa6..e015aa40 100644 --- a/PBot/Factoids.pm +++ b/PBot/Factoids.pm @@ -252,6 +252,10 @@ sub find_factoid { my @result = eval { for (my $depth = 0; $depth < 5; $depth++) { + if ($self->{pbot}->{commands}->exists($keyword)) { + return undef; + } + # check factoids foreach my $channel (sort keys %{ $self->{factoids}->hash }) { if($exact_channel) { @@ -483,7 +487,6 @@ sub interpreter { while ($action =~ /(?find_factoid($from, $v, undef, 0, 1); @@ -498,7 +501,7 @@ sub interpreter { $mylist[$line] =~ s/"//g; $action =~ s/\$$var/$mylist[$line]/; } else { - $action =~ s/\$$var/$var/g; + $action =~ s/(?{pbot}->{factoids}->find_factoid($from, $cmd, $args, 0, 0, 1); - if(defined $trigger) { - if ($preserve_whitespace == 0) { - $preserve_whitespace = $self->{pbot}->{factoids}->{factoids}->hash->{$chan}->{$trigger}->{preserve_whitespace}; - $preserve_whitespace = 0 if not defined $preserve_whitespace; - } + if (not $self->{pbot}->{commands}->exists($cmd)) { + my ($chan, $trigger) = $self->{pbot}->{factoids}->find_factoid($from, $cmd, $args, 0, 0, 1); + if(defined $trigger) { + if ($preserve_whitespace == 0) { + $preserve_whitespace = $self->{pbot}->{factoids}->{factoids}->hash->{$chan}->{$trigger}->{preserve_whitespace}; + $preserve_whitespace = 0 if not defined $preserve_whitespace; + } - $use_output_queue = $self->{pbot}->{factoids}->{factoids}->hash->{$chan}->{$trigger}->{use_output_queue}; - $use_output_queue = 0 if not defined $use_output_queue; + $use_output_queue = $self->{pbot}->{factoids}->{factoids}->hash->{$chan}->{$trigger}->{use_output_queue}; + $use_output_queue = 0 if not defined $use_output_queue; + } } }