my ($self, $args) = @_;
my $on_setup = $args->{on_setup};
$self->irc_client->configure(
- on_message_text => $self->_replace_weakself('receive_irc_message')
+ on_message_text => $self->_replace_weakself('receive_irc_message'),
+ on_message_ctcp_ACTION => $self->_replace_weakself('receive_irc_message')
);
$self->irc_client->login(
nick => $self->irc_nick, host => $self->irc_server,
});
}
+sub stop_chain {
+ my ($self, $chain) = @_;
+ $self->irc_client->send_message('PART', undef, $chain->irc_channel);
+ delete $self->chains->{$chain->irc_channel};
+ $self->remove_child($chain);
+}
+
sub send_irc_message {
my ($self, $args) = @_;
$self->irc_client->send_message('PRIVMSG', undef, @{$args}{qw(to text)});
sub receive_irc_message {
my ($self, $message, $hints) = @_;
return if $hints->{prefix_is_me};
- if (my $chain = $self->chains->{$hints->{target_name}}) {
+ if (my $chain = $self->chains->{$hints->{target_name}||''}) {
+ $chain->handle_irc_message($message, $hints);
+ } elsif ($chain = $self->chains->{$hints->{targets}||''}) {
$chain->handle_irc_message($message, $hints);
}
}