muck.pl

use strict;
use Irssi;
use vars qw($VERSION %IRSSI);

$VERSION = 0.1;
%IRSSI = (
        authors     => 'Kiyoshi Aman',
        contact     => 'kiyoshi.aman@gmail.com',
        name        => 'MUCK',
        description => 'MUCK-like commandline stuff for irssi',
        license     => 'MIT',
        changed     => '9/15/2006',
);

my $lastpaged;

Irssi::signal_add "send text" => sub {
        my ($data, $server, $witem) = @_;

        if ($data =~ /^:(d|x|d|o|p|\(|\)|\\|\[|\]|[0-9])(\!|\*|\s|$)/i) {
                $witem->command("say $data");
                Irssi::signal_stop;
        }
        elsif ($data =~ /^:/) {
                $data =~ s/^://;
                $witem->command("me $data");
                Irssi::signal_stop();
        }
        else {
                my ($trigger, $text) = split / /, $data, 2;

                if ($trigger =~ /^ooc$/) {
                        $witem->command("say (($text))");
                        Irssi::signal_stop();
                } elsif ($trigger =~ /^tb$/) {
                        $witem->command("say . o O ($text)");
                        Irssi::signal_stop();
                } elsif ($trigger eq "pose") {
                        $witem->command("me $text");
                        Irssi::signal_stop();
                }
                elsif ($trigger =~ /^(p(age)|w(hisper))$/) {
                        my ($target,$text2) = split /=/,$text,2;
                        unless ($target eq '#r') {
                                $lastpaged = $target;

                                $witem->command("msg $target $text2");
                        }
                        else {
                                $witem->command("msg $lastpaged $text2");
                        }
                        Irssi::signal_stop();
                }
        }
};
Irssi::signal_add "message private" => sub {
        my ($server,$data,$nick,$address) = @_;
        return unless $server;
        $lastpaged = $nick;
};