App-Alice
view release on metacpan or search on metacpan
share/commands.pl view on Meta::CPAN
my ($self, $window, $new_topic) = @_;
if ($new_topic) {
$window->topic({string => $new_topic, nick => $window->nick, time => time});
$window->irc->send_srv(TOPIC => $window->title, $new_topic);
}
else {
my $topic = $window->topic;
$self->broadcast($window->format_event("topic", $topic->{author}, $topic->{string}));
}
},
},
{
name => 'whois',
re => qr{^/whois(?:\s+(-f(?:orce)?))?\s+(\S+)},
eg => "/WHOIS [-force] <nick>",
desc => "Shows info about the specified nick. Use -force option to refresh",
code => sub {
my ($self, $window, $nick, $force) = @_;
if (!$force and $window->irc->includes_nick($nick)) {
$self->reply($window, $window->irc->whois_table($nick));
}
else {
$window->irc->add_whois_cb($nick => sub {
$self->reply($window, $window->irc->whois_table($nick));
});
}
},
},
{
name => 'me',
re => qr{^/me\s+(.+)},
eg => "/ME <message>",
desc => "Sends a CTCP ACTION to the current window.",
code => sub {
my ($self, $window, $action) = @_;
$self->show($window, "⢠$action");
$window->irc->send_srv(PRIVMSG => $window->title, chr(01) . "ACTION $action" . chr(01));
},
},
{
name => 'quote',
re => qr{^/(?:quote|raw)\s+(.+)},
eg => "/QUOTE <data>",
desc => "Sends the server raw data without parsing.",
code => sub {
my ($self, $window, $command) = @_;
$window->irc->send_raw($command);
},
},
{
name => 'disconnect',
re => qr{^/disconnect\s+(\S+)},
eg => "/DISCONNECT <server name>",
desc => "Disconnects from the specified server.",
code => sub {
my ($self, $window, $network) = @_;
my $irc = $self->app->get_irc($network);
if ($irc and $irc->is_connected) {
$irc->disconnect;
}
elsif ($irc->reconnect_timer) {
$irc->cancel_reconnect;
$irc->log(info => "canceled reconnect");
}
else {
$self->reply($window, "already disconnected");
}
},
},
{
name => 'connect',
re => qr{^/connect\s+(\S+)},
eg => "/CONNECT <server name>",
desc => "Connects to the specified server.",
code => sub {
my ($self, $window, $network) = @_;
my $irc = $self->app->get_irc($network);
if ($irc and !$irc->is_connected) {
$irc->connect;
}
},
},
{
name => 'ignore',
re => qr{^/ignore\s+(\S+)},
eg => "/IGNORE <nick>",
desc => "Adds nick to ignore list.",
code => sub {
my ($self, $window, $nick) = @_;
$self->app->add_ignore($nick);
$self->reply($window, "Ignoring $nick");
},
},
{
name => 'unignore',
re => qr{^/unignore\s+(\S+)},
eg => "/UNIGNORE <nick>",
desc => "Removes nick from ignore list.",
code => sub {
my ($self, $window, $nick) = @_;
$self->app->remove_ignore($nick);
$self->reply($window, "No longer ignoring $nick");
},
},
{
name => 'ignores',
re => qr{^/ignores?},
eg => "/IGNORES",
desc => "Lists ignored nicks.",
code => sub {
my ($self, $window) = @_;
my $msg = join ", ", $self->app->ignores;
$msg = "none" unless $msg;
$self->reply($window, "Ignoring:\n$msg");
},
},
{
name => 'window',
re => qr{^/w(?:indow)?\s*(\d+|next|prev(?:ious)?)},
eg => "/WINDOW <window number>",
( run in 0.583 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )