#!/usr/local/bin/perl -w
###########################################
# irc2ym - Relay some IRC messages to Y!M
# Mike Schilli, 2010 (m@perlmeister.com)
###########################################
use strict;
use local::lib;

###########################################
package YMBot;
###########################################
use base qw( Bot::BasicBot );
use FindBin qw($Bin);

my $ymsend       = "$Bin/ymsend";
my($home)        = glob "~";
my $KEYWORD_LIST_FILE = 
                  "$home/.irc2ym-keywords";
my @KEYWORD_LIST = ();

keyword_list_read();

###########################################
sub said {
###########################################
  my($self, $data) = @_;

  if( keyword_match( $data->{body} ) ) {
    my $rc = system($ymsend,
     "$data->{who} said: '$data->{body}'");
    warn "$ymsend failed: $!" if $rc;
  }

  return $data;
}

###########################################
sub keyword_list_read {
###########################################
  if( !open FILE, "<$KEYWORD_LIST_FILE" ) {
    warn "$KEYWORD_LIST_FILE not found";
    return;
  }

  while(<FILE>) {
    chomp;
    s/#.*//;
    next if /^\s*$/;
    push @KEYWORD_LIST, $_;
  }
  close FILE;
}

###########################################
sub keyword_match {
###########################################
  my($said) = @_;

  for my $regex (@KEYWORD_LIST) {
    return 1 if $said =~ /$regex/i;
  }
  return 0;
}

###########################################
package main;
###########################################
use Bot::BasicBot;

my $bot = YMBot->new(
  server    => "irc.freenode.com",
  channels  => ["#ymtest"],
  nick      => "ymbot",
  name      => "Relay to Y!M",
  charset   => "utf-8",
);

$bot->run();
