1#!/usr/local/bin/perl 2 3use strict; 4use vars qw($VERSION %IRSSI); 5 6$VERSION = "2003011700"; 7%IRSSI = ( 8 authors => "Joern 'Wulf' Heissler", 9 contact => "wulf\@wulf.eu.org", 10 name => "chanfull", 11 description => "Notifies the user when some channel limit is reached", 12 license => "GPLv2", 13 url => "", 14 changed => "$VERSION" 15); 16 17use Irssi; 18 19# draws a nice box, author is Stefan 'tommie' Tomanek 20sub draw_box ($$$) { 21 my ($title, $text, $footer) = @_; 22 my $box = ''; 23 $box .= '%R,--[%n%9%U'.$title.'%U%9%R]%n'."\n"; 24 foreach (split(/\n/, $text)) { 25 $box .= '%R|%n '.$_."\n"; 26 } 27 $box .= '%R`--<%n'.$footer.'%R>->%n'; 28 return $box; 29} 30 31sub event_message_join ($$$$) { 32 my ($server, $channel, $nick, $address) = @_; 33 my $c=Irssi::channel_find($channel); 34 my $users=scalar @{[$c->nicks]}; 35 return if($c->{limit} == 0); 36 my $left = $c->{limit} - $users; 37 if($left < 4) { 38 if($left<=0) { 39 $c->print(draw_box('warning', 'Channel is full!!', 'chanfull'), MSGLEVEL_CLIENTCRAP); 40 } else { 41 $c->print(draw_box('warning', 'Channel is nearly full! ('.$left.' client'.(($left==1)?'':'s').' left)', 'chanfull'), MSGLEVEL_CLIENTCRAP); 42 } 43 } 44} 45 46Irssi::signal_add('message join', 'event_message_join'); 47 48Irssi::print '%B>>%n '.$IRSSI{name}.' '.$VERSION.' loaded.', MSGLEVEL_CLIENTCRAP; 49