#!/usr/bin/perl

use POE;
use POE::Component::IRC;

use helpers;

@plugins = ("Logs", "Sessions", "Liens", "KikooLol");

my ($irc) = POE::Component::IRC->spawn();

my $channel = "#u-classroom";

sub load_module {
    my $mod = shift @_;
    my $nick = shift @_;
    my $quiet = shift @_;
    eval "use Plugins::$mod";
    if ($@) {
        print STDERR $@;
        return -1;
    } else {
        my $plugin = $mod->new();
        $irc->plugin_add( "$mod", $plugin );
        my $pluginobj = $irc->plugin_get( "$mod" );
        return 0;
    }
}

sub bot_start {
    my $kernel  = $_[KERNEL];
    my $heap    = $_[HEAP];
    my $session = $_[SESSION];

    $irc->yield( register => "all" );

    $irc->yield( connect =>
        { Nick => 'u-bot',
          Username => 'u-bot',
          Ircname  => 'u-classroom bot',
          Server   => 'irc.freenode.net',
          Port     => '6667',
        }
    );
}

POE::Session->create(
    inline_states => {
        _start     => \&bot_start,
        irc_001    => \&on_connect,
        irc_public => \&on_public,
    },
);

sub on_connect {
        $irc->yield( join => $channel );
        for (@plugins) {
            load_module ($_, "", 1);
        }
}

sub on_public {
}

$poe_kernel->run();
exit 0;

