2ck

Irssi message filter

2ck
Apr 9th, 2012
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.45 KB | None | 0 0
  1. # Usage:
  2. #   /filter <filter> <your_message>
  3. # feel free to add your own filters
  4. use strict;
  5. use vars qw($VERSION %IRSSI);
  6.  
  7. use Irssi qw(command_bind signal_add);
  8. use IO::File;
  9. $VERSION = '1.0';
  10. %IRSSI = (
  11.     authors     => '2ck',
  12.     contact     => 'anon@no_contact.com',
  13.     name        => 'filters',
  14.     description => 'Send your text through predefined filters',
  15.     license     => 'Public domain',
  16. );
  17.  
  18. sub filter {
  19.     my ($data, $server, $witem) = @_;
  20.     my @filters = qw(b1ff pirate kenny chef uniencode cowsay eleet pig rot13 morse jokertext);
  21.  
  22.     if (!$server || !$server->{connected}) {
  23.         Irssi::print("Not connected to server");
  24.         return;
  25.     }
  26.     if ($data)
  27.     {
  28.         my ($filter, $orig) = split /\s/, $data, 2;
  29.         my $filtered = "";
  30.         my @match;
  31.         if (@match = grep(/^($filter)/i, @filters))
  32.         {
  33.             $filter = join '|', @match;
  34.             if ($filter eq "morse")
  35.             {
  36.                 $filter = $filter . " -s";
  37.             }
  38.         }
  39.         else
  40.         {
  41.             Irssi::print("Not a valid filter");
  42.             return 1;
  43.         }
  44.         $filtered = qx(echo "$orig" | $filter | censor);
  45.         if ($filter =~ /morse/)
  46.         {
  47.             $filtered =~ s/\n\s\n/ \/ /g;
  48.             $filtered =~ s/\n/ /g;
  49.         }
  50.  
  51.         foreach (split /\n/, $filtered)
  52.         {
  53.             $server->command("MSG $witem->{name} $_");
  54.         }
  55.     }
  56. }
  57.  
  58. command_bind("filter", \&filter);
Advertisement
Add Comment
Please, Sign In to add comment