1 2# By Stefan 'tommie' Tomanek 3use strict; 4 5use vars qw($VERSION %IRSSI); 6$VERSION = "2003020801"; 7%IRSSI = ( 8 authors => "Stefan 'tommie' Tomanek", 9 contact => "stefan\@pico.ruhr.de", 10 name => "CRAPbuster", 11 description => "Removes CRAP or CLIENTCRAP messages from your buffer", 12 license => "GPLv2", 13 changed => "$VERSION", 14 commands => "crapbuster" 15); 16 17use Irssi; 18use Irssi::TextUI; 19 20sub cmd_crapbuster ($$$) { 21 my ($args, $server, $witem) = @_; 22 my $limit = $args =~ /^\d+$/ ? $args : -1; 23 my $win = ref $witem ? $witem->window() : Irssi::active_win(); 24 my $view = $win->view; 25 my $line = $view->get_lines; 26 $line = $line->next while defined $line->next; 27 while (defined $line->prev){ 28 last if $limit == 0; 29 my $level = $line->{info}{level}; 30 my $copy = $line; 31 $line = $line->prev; 32 foreach (split / /, Irssi::settings_get_str('crapbuster_levels')) { 33 next unless ($level == Irssi::level2bits($_)); 34 $view->remove_line($copy); 35 last; 36 } 37 $limit-- if $limit; 38 } 39 $view->redraw(); 40} 41 42Irssi::command_bind('crapbuster', \&cmd_crapbuster); 43Irssi::settings_add_str($IRSSI{name}, 'crapbuster_levels', 'CLIENTCRAP CRAP'); 44