archive

- Random tools & helpful resources for IRC
git clone git://git.acid.vegas/archive.git
Log | Files | Refs | Archive

snomasks.pl (1636B)

      1 # Released into the Public Domain
      2 
      3 # Note: After loading the script and adding snomasks into one of your bars, you
      4 # must request /umode once on each server you have server notices masks set on.
      5 # After that, the script will automatically update the bar item.
      6 
      7 use strict;
      8 use warnings;
      9 
     10 no strict 'subs';
     11 
     12 my $SCRIPT_NAME = 'snomasks';
     13 my $SCRIPT_AUTHOR = 'The Krusty Krab <wowaname@volatile.ch>';
     14 my $SCRIPT_VERSION = '1.1';
     15 my $SCRIPT_LICENCE = 'Public domain';
     16 my $SCRIPT_DESC = 'Server notice mask bar item for opers';
     17 
     18 if (weechat::register($SCRIPT_NAME, $SCRIPT_AUTHOR, $SCRIPT_VERSION,
     19  $SCRIPT_LICENCE, $SCRIPT_DESC, '', '')) {
     20 	weechat::bar_item_new('snomasks', 'bar_snomasks', '');
     21 	weechat::hook_signal('buffer_switch', 'buffer_switch', '');
     22 	weechat::hook_signal('irc_server_disconnected', 'irc_disconnected', '');
     23 	weechat::hook_signal('*,irc_raw_in_008', 'irc_008', '');
     24 }
     25 
     26 my %snomask;
     27 
     28 sub bar_snomasks {
     29 	my $buffer = weechat::current_buffer();
     30 
     31 	return ''
     32 		if weechat::buffer_get_string($buffer, 'localvar_plugin') ne 'irc';
     33 
     34 	my $server = weechat::buffer_get_string($buffer, 'localvar_server');
     35 	return $snomask{$server} // '';
     36 }
     37 
     38 sub buffer_switch {
     39 	weechat::bar_item_update('snomasks');
     40 	return weechat::WEECHAT_RC_OK;
     41 }
     42 
     43 sub irc_008 {
     44 	my (undef, $server, $modes) = (shift,
     45 		shift =~ /^(.+),irc_raw_in_008$/,
     46 		shift =~ /:[^ ]* 008 [^ ]* (?::Server notice mask \()?([^ )]*)/);
     47 	$server = lc $server;
     48 
     49 	$snomask{$server} = $modes;
     50 	weechat::bar_item_update('snomasks');
     51 	return weechat::WEECHAT_RC_OK;
     52 }
     53 
     54 sub irc_disconnected {
     55 	my $server = pop;
     56 	delete $snomask{lc $server};
     57 	return weechat::WEECHAT_RC_OK;
     58 }