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 }