Advertisement
Guest User

Untitled

a guest
Dec 10th, 2011
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. #!/usr/bin/env perl
  2. use Mojolicious::Lite;
  3. use EV;
  4. use AnyEvent::IRC;
  5. use AnyEvent::IRC::Client;
  6. use File::Copy;
  7. use DateTime;
  8. use Data::Dumper;
  9.  
  10.  
  11. # Join #mojo on irc.perl.org
  12. my $irc = AnyEvent::IRC::Client->new;
  13. my $channel = "#maxson";
  14. $irc->connect('irc.freenode.net', 6667, {nick => "limebots-succeseder", user => "limebots-succeseder", real => "limebot's succeseder"});
  15. $irc->send_srv(JOIN => $channel);
  16. get '/' => 'index';
  17. $irc->send_srv(PRIVMSG => $channel, 'Hi all!');
  18. my $dt = DateTime->now;
  19. my $ymd = $dt->ymd;
  20. my $filename = "a/" . $ymd;
  21. get '/events' => sub {
  22. my $self = shift;
  23. $self->write("event:r\ndata: \n\n");
  24.  
  25. # Emit "msg" event for every new IRC message
  26. $self->res->headers->content_type('text/event-stream');
  27. my $g = $irc->reg_cb( publicmsg => sub {
  28. my ( $foo, $channel, $ircmsg ) = @_;
  29. my $message = $ircmsg->{params}->[1];
  30. my $user = $ircmsg->{prefix};
  31. my $userid = $ircmsg->{prefix};
  32. my $nick = AnyEvent::IRC::Util::prefix_nick($user);
  33. $message = $nick . ': ' . $message;
  34. open(my $n, ">>", $filename)
  35. or die "cannot open append output.txt: $!";
  36. print $n "$message \n";
  37. $self->write("event:msg\ndata: $message\n\n");
  38. });
  39. $irc->reg_cb(join => sub {
  40. my ($nick, $channel, $is_myself) = @_;
  41. my $message = "$nick join'd the chat room\n";
  42. open(my $n, ">>", $filename)
  43. or die "cannot open append $filename: $!";
  44. print $n $message;
  45. $self->write("event:msg\ndata: $message\n\n");
  46.  
  47. });
  48. $irc->reg_cb(nick_change => sub {
  49. my ($ld_nick, $new_nick, $is_myself) = @_;
  50. print $ld_nick;
  51. my $message = "$ld_nick changed his/her nickname to $new_nick\n";
  52. open(my $n, ">>", $filename)
  53. or die "cannot append $filename: $!";
  54. print $n $message;
  55. $self->write("event:msg\ndata: $message\n\n");
  56.  
  57. });
  58.  
  59. $self->on(finish => sub { undef $g });
  60. };
  61.  
  62. app->start;
  63. __DATA__
  64.  
  65. @@ index.html.ep
  66. <!doctype html><html>
  67. <head>
  68. <title>The Mojolicious IRC channel</title>
  69. <style type="text/css">
  70. #currentcontent
  71. {
  72. width:330px;
  73. height:300px;
  74. overflow:hidden;
  75. margin-left: auto; margin-right: auto;
  76. padding:10px;
  77. border:5px solid gray;
  78. }
  79. </style>
  80. <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  81. <script>
  82. var events = new EventSource('<%= url_for 'events' %>');
  83. // Subscribe to "msg" event
  84. events.addEventListener('msg', function(event) {
  85. $("#currentcontent").prepend(document.createTextNode(event.data));
  86. //$('div.dd').css({'display':'inline', 'clear':'both'});
  87. $("#currentcontent").prepend('<br />');
  88. }, false);
  89. events.addEventListener('r', function(event) {
  90. }, false);
  91. </script>
  92. </head>
  93. <body>
  94. <div id="content">Below is the current content of the chanel mojo</div>
  95. <div id="currentcontent"></div>
  96. </body>
  97. </html>
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement