support ACTION (ugly but working)
[scpubgit/Clifton.git] / lib / App / Clifton / Tower / IRC.pm
index 5dffc0e..ccba44c 100644 (file)
@@ -19,7 +19,8 @@ sub BUILD {
   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,
@@ -47,6 +48,13 @@ sub start_chain {
   });
 }
 
+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)});
@@ -57,6 +65,8 @@ sub receive_irc_message {
   return if $hints->{prefix_is_me};
   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);
   }
 }