mirror of
				https://github.com/pragma-/pbot.git
				synced 2025-11-04 08:37:24 +01:00 
			
		
		
		
	Improve and simplify pipe/subcmd logic
This commit is contained in:
		
							parent
							
								
									bc1cc61d06
								
							
						
					
					
						commit
						b8c77abd47
					
				@ -109,16 +109,6 @@ sub interpreter {
 | 
			
		||||
    $level = $stuff->{'effective-level'};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (exists $stuff->{pipe_result}) {
 | 
			
		||||
    my $pipe_result = $stuff->{pipe_result};
 | 
			
		||||
    if (length $stuff->{arguments}) {
 | 
			
		||||
      $stuff->{arguments} .= " $pipe_result";
 | 
			
		||||
    } else {
 | 
			
		||||
      $stuff->{arguments} = $pipe_result;
 | 
			
		||||
    }
 | 
			
		||||
    $stuff->{arglist} = $self->{pbot}->{interpreter}->make_args($stuff->{arguments});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  foreach my $ref (@{ $self->{handlers} }) {
 | 
			
		||||
    if ($ref->{name} eq $keyword) {
 | 
			
		||||
      if ($level >= $ref->{level}) {
 | 
			
		||||
 | 
			
		||||
@ -873,16 +873,6 @@ sub interpreter {
 | 
			
		||||
    return $usage;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (exists $stuff->{pipe_result}) {
 | 
			
		||||
    my $pipe_result = $stuff->{pipe_result};
 | 
			
		||||
    if (length $stuff->{arguments}) {
 | 
			
		||||
      $stuff->{arguments} .= " $pipe_result";
 | 
			
		||||
    } else {
 | 
			
		||||
      $stuff->{arguments} = $pipe_result;
 | 
			
		||||
    }
 | 
			
		||||
    $stuff->{arglist} = $self->{pbot}->{interpreter}->make_args($stuff->{arguments});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (length $stuff->{arguments} and exists $self->{factoids}->hash->{$channel}->{$keyword}->{action_with_args}) {
 | 
			
		||||
    $action = $self->{factoids}->hash->{$channel}->{$keyword}->{action_with_args};
 | 
			
		||||
  } else {
 | 
			
		||||
@ -997,7 +987,7 @@ sub handle_action {
 | 
			
		||||
 | 
			
		||||
    if (defined $self->{factoids}->hash->{$channel}->{$keyword}->{'effective-level'}) {
 | 
			
		||||
        if ($self->{factoids}->hash->{$channel}->{$keyword}->{'locked'}) {
 | 
			
		||||
          $self->{pbot}->{logger}->log("Effective-level set to $self->{factoids}->hash->{$channel}->{$keyword}->{'effective-level'}\n");
 | 
			
		||||
          $self->{pbot}->{logger}->log("Effective-level set to $self->{factoids}->{hash}->{$channel}->{$keyword}->{'effective-level'}\n");
 | 
			
		||||
          $stuff->{'effective-level'} = $self->{factoids}->hash->{$channel}->{$keyword}->{'effective-level'};
 | 
			
		||||
        } else {
 | 
			
		||||
          $self->{pbot}->{logger}->log("Ignoring effective-level of $self->{factoids}->hash->{$channel}->{$keyword}->{'effective-level'} on unlocked factoid\n");
 | 
			
		||||
 | 
			
		||||
@ -768,6 +768,17 @@ sub handle_result {
 | 
			
		||||
    $stuff->{prepend} = $1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($stuff->{pipe} and not $stuff->{authorized}) {
 | 
			
		||||
    my ($pipe, $pipe_rest) = (delete $stuff->{pipe}, delete $stuff->{pipe_rest});
 | 
			
		||||
    if (not $stuff->{alldone}) {
 | 
			
		||||
      $stuff->{command} = "$pipe $result $pipe_rest";
 | 
			
		||||
      $result = $self->interpret($stuff);
 | 
			
		||||
      $stuff->{result} = $result;
 | 
			
		||||
    }
 | 
			
		||||
    $self->handle_result($stuff, $result);
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (exists $stuff->{subcmd}) {
 | 
			
		||||
    my $command = pop @{$stuff->{subcmd}};
 | 
			
		||||
 | 
			
		||||
@ -781,25 +792,11 @@ sub handle_result {
 | 
			
		||||
      $stuff->{command} = $command;
 | 
			
		||||
      $result = $self->interpret($stuff);
 | 
			
		||||
      $stuff->{result}= $result;
 | 
			
		||||
      $self->{pbot}->{logger}->log("subcmd result [$result]\n");
 | 
			
		||||
    }
 | 
			
		||||
    $self->handle_result($stuff);
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($stuff->{pipe} and not $stuff->{authorized}) {
 | 
			
		||||
    my ($pipe, $pipe_rest) = (delete $stuff->{pipe}, delete $stuff->{pipe_rest});
 | 
			
		||||
    $self->{pbot}->{logger}->log("Handling pipe [$result][$pipe][$pipe_rest]\n");
 | 
			
		||||
    $stuff->{pipe_result} = $result;
 | 
			
		||||
    if (not $stuff->{alldone}) {
 | 
			
		||||
      $stuff->{command} = "$pipe$pipe_rest";
 | 
			
		||||
      $result = $self->interpret($stuff);
 | 
			
		||||
      $stuff->{result} = $result;
 | 
			
		||||
    }
 | 
			
		||||
    $self->handle_result($stuff, $result);
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ($stuff->{prepend}) {
 | 
			
		||||
    $result = "$stuff->{prepend} $result";
 | 
			
		||||
  }
 | 
			
		||||
@ -807,7 +804,6 @@ sub handle_result {
 | 
			
		||||
  if ($stuff->{command_split}) {
 | 
			
		||||
    my $botnick = $self->{pbot}->{registry}->get_value('irc', 'botnick');
 | 
			
		||||
    $stuff->{command} = delete $stuff->{command_split};
 | 
			
		||||
    $self->{pbot}->{logger}->log("Handling split [$result][$stuff->{command}]\n");
 | 
			
		||||
    $result =~ s#^/say #\n#i;
 | 
			
		||||
    $result =~ s#^/me #\n* $botnick #i;
 | 
			
		||||
    if (not length $stuff->{split_result}) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user