Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use Mojolicious::Lite;
- use EV;
- use AnyEvent::IRC;
- use AnyEvent::IRC::Client;
- use File::Copy;
- use DateTime;
- use Data::Dumper;
- # Join #mojo on irc.perl.org
- my $irc = AnyEvent::IRC::Client->new;
- my $channel = "#maxson";
- $irc->connect('irc.freenode.net', 6667, {nick => "limebots-succeseder", user => "limebots-succeseder", real => "limebot's succeseder"});
- $irc->send_srv(JOIN => $channel);
- get '/' => 'index';
- $irc->send_srv(PRIVMSG => $channel, 'Hi all!');
- my $dt = DateTime->now;
- my $ymd = $dt->ymd;
- my $filename = "a/" . $ymd;
- get '/events' => sub {
- my $self = shift;
- $self->write("event:r\ndata: \n\n");
- # Emit "msg" event for every new IRC message
- $self->res->headers->content_type('text/event-stream');
- my $g = $irc->reg_cb( publicmsg => sub {
- my ( $foo, $channel, $ircmsg ) = @_;
- my $message = $ircmsg->{params}->[1];
- my $user = $ircmsg->{prefix};
- my $userid = $ircmsg->{prefix};
- my $nick = AnyEvent::IRC::Util::prefix_nick($user);
- $message = $nick . ': ' . $message;
- open(my $n, ">>", $filename)
- or die "cannot open append output.txt: $!";
- print $n "$message \n";
- $self->write("event:msg\ndata: $message\n\n");
- });
- $irc->reg_cb(join => sub {
- my ($nick, $channel, $is_myself) = @_;
- my $message = "$nick join'd the chat room\n";
- open(my $n, ">>", $filename)
- or die "cannot open append $filename: $!";
- print $n $message;
- $self->write("event:msg\ndata: $message\n\n");
- });
- $irc->reg_cb(nick_change => sub {
- my ($ld_nick, $new_nick, $is_myself) = @_;
- print $ld_nick;
- my $message = "$ld_nick changed his/her nickname to $new_nick\n";
- open(my $n, ">>", $filename)
- or die "cannot append $filename: $!";
- print $n $message;
- $self->write("event:msg\ndata: $message\n\n");
- });
- $self->on(finish => sub { undef $g });
- };
- app->start;
- __DATA__
- @@ index.html.ep
- <!doctype html><html>
- <head>
- <title>The Mojolicious IRC channel</title>
- <style type="text/css">
- #currentcontent
- {
- width:330px;
- height:300px;
- overflow:hidden;
- margin-left: auto; margin-right: auto;
- padding:10px;
- border:5px solid gray;
- }
- </style>
- <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
- <script>
- var events = new EventSource('<%= url_for 'events' %>');
- // Subscribe to "msg" event
- events.addEventListener('msg', function(event) {
- $("#currentcontent").prepend(document.createTextNode(event.data));
- //$('div.dd').css({'display':'inline', 'clear':'both'});
- $("#currentcontent").prepend('<br />');
- }, false);
- events.addEventListener('r', function(event) {
- }, false);
- </script>
- </head>
- <body>
- <div id="content">Below is the current content of the chanel mojo</div>
- <div id="currentcontent"></div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement