OSDN Git Service

split IRC related flavor
authorISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Mon, 29 Oct 2012 09:49:23 +0000 (18:49 +0900)
committerISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
Mon, 29 Oct 2012 09:49:23 +0000 (18:49 +0900)
lib/Mubot4FB.pm
lib/Mubot4FB/IRC.pm [new file with mode: 0644]
mubot4fb.pl

index 84ed871..6c758c6 100644 (file)
@@ -8,7 +8,6 @@ package Mubot4FB;
 use strict;
 use utf8;
 
-use base 'Bot::BasicBot';
 use POSIX 'strftime';
 
 use Mubot4FB::DB;
@@ -17,12 +16,15 @@ use Mubot4FB::FB;
 use Data::Dumper;
 
 my $mu_re = qr/^([^\s]+)\s+((?:https?|ftps?):\/\/[^\s]+)\s+(.+)$/i;
-my $irc_type = 1;
 
-sub misc_init {
-       my ($me) = @_;
+sub new {
+       my $proto = shift;
+       my $class = ref $proto || $proto;
+       my $self = {cfg => shift};
+       bless $self, $class;
 
-       $me->{last_search} = {};
+       $self->init();
+       return $self;
 }
 
 sub init {
@@ -33,17 +35,16 @@ sub init {
        return 1;
 }
 
-sub _format_submit {
-       my ($me, $e) = @_;
+sub misc_init {
+       my ($me) = @_;
 
-       return $e->{submitter}.'が『'.$e->{prefix}.' '.$e->{uri}.' '.$e->{comment}.'』と'.strftime('%Y-%m-%d %H:%M:%S', localtime($e->{post_time}));
+       $me->{last_search} = {};
 }
 
-sub _response {
-       my ($me, $args, $msg) = @_;
+sub _format_submit {
+       my ($me, $e) = @_;
 
-       $me->say(channel => $args->{channel},
-                body => $msg);
+       return $e->{submitter}.'が『'.$e->{prefix}.' '.$e->{uri}.' '.$e->{comment}.'』と'.strftime('%Y-%m-%d %H:%M:%S', localtime($e->{post_time}));
 }
 
 sub _add {
@@ -155,7 +156,7 @@ sub _not_yet {
        return 'まだ実装してないです';
 }
 
-sub said {
+sub getResponse {
        my ($me, $args) = @_;
        my $resp_msg;
 
@@ -178,7 +179,7 @@ sub said {
                }
        }
 
-       $me->_response($args, $resp_msg) if ($resp_msg);
+       return $resp_msg;
 }
 
 1;
diff --git a/lib/Mubot4FB/IRC.pm b/lib/Mubot4FB/IRC.pm
new file mode 100644 (file)
index 0000000..b24104b
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+#
+# Copyright (c) 2012 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
+# This program is covered by the GNU General Public License 2
+#
+package Mubot4FB::IRC;
+
+use strict;
+use utf8;
+
+use base 'Bot::BasicBot';
+use Mubot4FB;
+
+use Data::Dumper;
+
+sub init {
+       my ($me) = @_;
+       $me->{mu} = Mubot4FB->new($me->{cfg});
+       return 1;
+}
+
+sub _response {
+       my ($me, $args, $msg) = @_;
+
+       $me->say(channel => $args->{channel},
+                body => $msg);
+}
+
+sub said {
+       my ($me, $args) = @_;
+       my $resp_msg = $me->{mu}->getResponse($args);
+       $me->_response($args, $resp_msg) if ($resp_msg);
+}
+
+1;
index 92d9fa4..6225e26 100755 (executable)
@@ -9,7 +9,7 @@ use utf8;
 use FindBin;
 use lib ("$FindBin::Bin/lib", '/usr/share/mubot4fb/lib');
 
-use Mubot4FB;
+use Mubot4FB::IRC;
 use Mubot4FB::Config;
 
 use Data::Dumper;
@@ -30,13 +30,13 @@ die 'missing some config parameters should be defined (irc_server, fb_app_id, fb
       || !defined $cfg->{'db_pass'}
     );
 
-my $bot = Mubot4FB->new(server => $cfg->{'irc_server'},
-                       port => $cfg->{'irc_port'},
-                       channels => $cfg->{'irc_channels'},
-                       nick => $cfg->{'irc_nick'},
-                       username => $cfg->{'irc_name'},
-                       name => $cfg->{'irc_name'},
-                       charset => $cfg->{'irc_charset'},
-                       cfg => $cfg)->run();
+my $bot = Mubot4FB::IRC->new(server => $cfg->{'irc_server'},
+                            port => $cfg->{'irc_port'},
+                            channels => $cfg->{'irc_channels'},
+                            nick => $cfg->{'irc_nick'},
+                            username => $cfg->{'irc_name'},
+                            name => $cfg->{'irc_name'},
+                            charset => $cfg->{'irc_charset'},
+                            cfg => $cfg)->run();
 
 1;