[821] in BarnOwl Developers
[D-O-H] r815 - trunk/owl/perl/modules/IRC/lib/BarnOwl/Module/IRC
daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:10:05 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@mit.edu
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Thu, 10 Jan 2008 00:12:52 -0500 (EST)
Author: nelhage
Date: 2008-01-10 00:12:52 -0500 (Thu, 10 Jan 2008)
New Revision: 815
Modified:
trunk/owl/perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm
Log:
Show PART and JOIN messages
Modified: trunk/owl/perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm
===================================================================
--- trunk/owl/perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm 2008-01-10 04:14:20 UTC (rev 814)
+++ trunk/owl/perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm 2008-01-10 05:12:52 UTC (rev 815)
@@ -34,6 +34,8 @@
$self->add_global_handler(['msg', 'notice', 'public', 'caction'],
sub { goto &on_msg });
$self->add_global_handler(cping => sub { goto &on_ping });
+ $self->add_global_handler(join => sub { goto &on_join });
+ $self->add_global_handler(part => sub { goto &on_part });
$self->add_default_handler(sub { goto &on_event; });
return $self;
@@ -48,29 +50,38 @@
BarnOwl::admin_message("IRC", "Connected to " . $self->server . " (" . $self->alias . ")");
}
+sub new_message {
+ my $self = shift;
+ my $evt = shift;
+ return BarnOwl::Message->new(
+ type => 'IRC',
+ server => $self->server,
+ network => $self->alias,
+ sender => $evt->nick,
+ hostname => $evt->host,
+ from => $evt->from,
+ @_
+ );
+}
+
sub on_msg {
my ($self, $evt) = @_;
my ($recipient) = $evt->to;
my $body = strip_irc_formatting([$evt->args]->[0]);
$body = BarnOwl::Style::boldify($evt->nick.' '.$body) if $evt->type eq 'caction';
- my $msg = BarnOwl::Message->new(
- type => 'IRC',
+ my $msg = $self->new_message($evt,
direction => 'in',
- server => $self->server,
- network => $self->alias,
recipient => $recipient,
- body => $body,
- sender => $evt->nick,
- hostname => $evt->host,
- from => $evt->from,
+ body => $body,
$evt->type eq 'notice' ?
(notice => 'true') : (),
is_private($recipient) ?
(isprivate => 'true') : (channel => $recipient),
replycmd => 'irc-msg ' .
(is_private($recipient) ? $evt->nick : $recipient),
- replysendercmd => 'irc-msg ' . $evt->nick,
+ replysendercmd => 'irc-msg ' . $evt->nick
);
+
BarnOwl::queue_message($msg);
}
@@ -79,10 +90,28 @@
$self->ctcp_reply($evt->nick, join (' ', ($evt->args)));
}
+sub on_join {
+ my ($self, $evt) = @_;
+ my $msg = $self->new_message($evt,
+ loginout => 'login',
+ channel => $evt->to,
+ );
+ BarnOwl::queue_message($msg);
+}
+
+sub on_part {
+ my ($self, $evt) = @_;
+ my $msg = $self->new_message($evt,
+ loginout => 'logout',
+ channel => $evt->to,
+ );
+ BarnOwl::queue_message($msg);
+}
+
sub on_event {
my ($self, $evt) = @_;
BarnOwl::admin_message("IRC",
- "Unhandled IRC event of type " . $evt->type . ":\n"
+ "[" . $self->alias . "] Unhandled IRC event of type " . $evt->type . ":\n"
. strip_irc_formatting(join("\n", $evt->args)))
if BarnOwl::getvar('irc:spew') eq 'on';
}