diff options
Diffstat (limited to 'scripts/chansync.pl')
| -rw-r--r-- | scripts/chansync.pl | 75 | 
1 files changed, 75 insertions, 0 deletions
| diff --git a/scripts/chansync.pl b/scripts/chansync.pl new file mode 100644 index 0000000..5ec869f --- /dev/null +++ b/scripts/chansync.pl @@ -0,0 +1,75 @@ +# by Uwe 'duden' Dudenhoeffer +# +# chansync.pl + + +use strict; + +use vars qw($VERSION %IRSSI); +$VERSION = '0.22'; +%IRSSI = ( +    authors     => 'Uwe \'duden\' Dudenhoeffer', +    contact     => 'script@duden.eu.org', +    name        => 'chansync', +    description => '/who a channel and optionaly executes a command', +    license     => 'GPLv2', +    url         => '', +    changed     => 'Sun Feb  9 18:27:51 CET 2003', +    commands	=> 'chansync', +); + +# Changelog +# +# 0.22 +#   - added "commands => chansync" +# +# 0.21 +#   - some design issues +# +# 0.2 +#   - used "silent event who" instead of stopping "print text" +# +# 0.1 +#   - first working version + +use Irssi 20020324; +use POSIX; + +my(%arguments,%items); + +# Usage: /chansync [command] +sub cmd_chansync { +  my($args, $server, $item) = @_; +  return if not ($item && $item->{type} eq "CHANNEL"); +  my($chan) = $item->{name}; +  $server->redirect_event('who', 1, $chan, -1, undef, +                         { +                          "event 315" => "redir chansync endwho", +                          "event 352" => "redir chansync who", +                          "" => "event empty", +                         }); +  $server->send_raw("WHO $chan"); +  $arguments{lc $chan} = $args; +  $items{lc $chan} = $item; +} + +sub sig_event_block { +  Irssi::signal_stop(); +} + +sub sig_redir_chansync_who { +  Irssi::signal_emit('silent event who', @_); +} + +sub sig_redir_chansync_endwho { +  my($server) = shift; +  my(@text) = split " ", shift; +  my($cmd) = $arguments{lc @text[1]}; +  $items{lc @text[1]}->command("$cmd"); +  delete $arguments{lc @text[1]}; +  delete $items{lc @text[1]}; +} + +Irssi::command_bind("chansync", "cmd_chansync"); +Irssi::signal_add('redir chansync who', 'sig_redir_chansync_who'); +Irssi::signal_add('redir chansync endwho', 'sig_redir_chansync_endwho'); | 
