01 #!/usr/local/bin/perl -w 02 use strict; 03 use local::lib; 04 05 ########################################### 06 package YMBot; 07 ########################################### 08 use base qw( Bot::BasicBot ); 09 use FindBin qw($Bin); 10 11 my $ymsend = "$Bin/ymsend"; 12 my($home) = glob "~"; 13 my $KEYWORD_LIST_FILE = 14 "$home/.irc2ym-keywords"; 15 my @KEYWORD_LIST = (); 16 17 keyword_list_read(); 18 19 ########################################### 20 sub said { 21 ########################################### 22 my($self, $data) = @_; 23 24 if( keyword_match( $data->{body} ) ) { 25 my $rc = system($ymsend, 26 "$data->{who} said: '$data->{body}'"); 27 warn "$ymsend failed: $!" if $rc; 28 } 29 30 return $data; 31 } 32 33 ########################################### 34 sub keyword_list_read { 35 ########################################### 36 if( !open FILE, "<$KEYWORD_LIST_FILE" ) { 37 warn "$KEYWORD_LIST_FILE not found"; 38 return; 39 } 40 41 while() { 42 chomp; 43 s/#.*//; 44 next if /^\s*$/; 45 push @KEYWORD_LIST, $_; 46 } 47 close FILE; 48 } 49 50 ########################################### 51 sub keyword_match { 52 ########################################### 53 my($said) = @_; 54 55 for my $regex (@KEYWORD_LIST) { 56 return 1 if $said =~ /$regex/i; 57 } 58 return 0; 59 } 60 61 ########################################### 62 package main; 63 ########################################### 64 use Bot::BasicBot; 65 66 my $bot = YMBot->new( 67 server => "irc.freenode.com", 68 channels => ["#ymtest"], 69 nick => "ymbot", 70 name => "Relay to Y!M", 71 charset => "utf-8", 72 ); 73 74 $bot->run();