The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use lib 'lib';
use utf8;

use AnyEvent::IRC::Server;
use AnySan::Provider::Twitter;
use Config::Pit;
use Encode;

my $channel = '#twitter';

my $config = pit_get('tig-for-anysan', require => {
    consumer_key    => 'your twitter consumer_key',
    consumer_secret => 'your twitter consumer_secret',
    token           => 'your twitter access_token',
    token_secret    => 'your twitter access_token_secret',
});

my $twitter = twitter
    %{ $config },
    method          => 'userstream',
    ;

my $ircd = AnyEvent::IRC::Server->new(
    port       => 6667,
    servername => '127.0.0.1',
);
$ircd->run();

$ircd->reg_cb(
    daemon_privmsg => sub {
        my ($irc, $nick, $chan, $text) = @_;
        $twitter->send_message(decode( utf8 => $text ));
    },
);

my %users;
AnySan->register_listener(
    tig => {
        event => 'timeline',
        cb => sub {
            my $receive = shift;
            return unless $receive->message;
            $users{$receive->from_nickname} ||= do {
                $ircd->daemon_cmd_join($receive->from_nickname, $channel, 'JOIN', dummyHandle->new);
                1;
            };
            $ircd->daemon_cmd_privmsg(
                $receive->from_nickname => $channel,
                encode( utf8 => $receive->message ),
            );
        },
    },
);

AnySan->run;

package
  dummyHandle;

sub new {
    bless {
        'nick' => '',
    }, shift;
}

sub push_write{}