ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Net-IRC3/lib/Net/IRC3.pm
Revision: 1.15
Committed: Wed Apr 18 21:10:21 2007 UTC (17 years, 6 months ago) by elmex
Branch: MAIN
Changes since 1.14: +13 -4 lines
Log Message:
added CTCP support

File Contents

# User Rev Content
1 elmex 1.1 package Net::IRC3;
2     use strict;
3     use AnyEvent;
4     use IO::Socket::INET;
5 elmex 1.2
6 elmex 1.3 our $ConnectionClass = 'Net::IRC3::Connection';
7 elmex 1.2
8 elmex 1.1 =head1 NAME
9    
10 elmex 1.8 Net::IRC3 - An event system independend IRC protocol module
11 elmex 1.1
12     =head1 VERSION
13    
14 elmex 1.13 Version 0.5
15 elmex 1.1
16     =cut
17    
18 elmex 1.13 our $VERSION = '0.5';
19 elmex 1.1
20     =head1 SYNOPSIS
21    
22 elmex 1.8 Using the simplistic L<Net::IRC3::Connection>:
23    
24     use AnyEvent;
25 elmex 1.7 use Net::IRC3::Connection;
26 elmex 1.1
27 elmex 1.8 my $c = AnyEvent->condvar;
28    
29 elmex 1.7 my $con = new Net::IRC3::Connection;
30 elmex 1.1
31 elmex 1.8 $con->connect ("localhost", 6667);
32    
33     $con->reg_cb (irc_001 => sub { print "$_[1]->{prefix} says i'm in the IRC: $_[1]->{trailing}!\n"; $c->broadcast; 0 });
34     $con->send_msg (undef, NICK => undef, "testbot");
35     $con->send_msg (undef, USER => 'testbot', "testbot", '*', '0');
36    
37     $c->wait;
38    
39     Using the more sophisticatd L<Net::IRC3::Client::Connection>:
40    
41     use AnyEvent;
42     use Net::IRC3::Client::Connection;
43    
44     my $c = AnyEvent->condvar;
45    
46     my $timer;
47     my $con = new Net::IRC3::Client::Connection;
48    
49     $con->reg_cb (registered => sub { print "I'm in!\n"; 0 });
50     $con->reg_cb (disconnect => sub { print "I'm out!\n"; 0 });
51     $con->reg_cb (
52     sent => sub {
53     if ($_[2] eq 'PRIVMSG') {
54     print "Sent message!\n";
55     $timer = AnyEvent->timer (after => 1, cb => sub { $c->broadcast });
56     }
57     1
58     }
59     );
60    
61     $con->send_srv (PRIVMSG => "Hello there i'm the cool Net::IRC3 test script!", 'elmex');
62    
63     $con->connect ("localhost", 6667);
64     $con->register (qw/testbot testbot testbot/);
65    
66     $c->wait;
67     undef $timer;
68 elmex 1.1
69 elmex 1.8 $con->disconnect;
70 elmex 1.1
71     =head1 DESCRIPTION
72    
73 elmex 1.8 The L<Net::IRC3> module consists of L<Net::IRC3::Connection>, L<Net::IRC3::Client::Connection>
74     and L<Net::IRC3::Util>. L<Net::IRC3> only contains this documentation.
75 elmex 1.1 It manages connections and parses and constructs IRC messages.
76    
77 elmex 1.15 L<Net::IRC3> can be viewed as toolbox for handling IRC connections
78     and communications. It won't do everything for you, and you still
79     need to know a few details of the IRC protocol.
80    
81     L<Net::IRC3::Client::Connection> is a more highlevel IRC connection
82     that already processes some messages for you and will generated some
83     events that are maybe useful to you. It will also do PING replies for you
84     and manage channels a bit.
85    
86     L<Net::IRC3::Connection> is a lowlevel connection that only connects
87     to the server and will let you send and receive IRC messages.
88     L<Net::IRC3::Connection> does not imply any client behaviour, you could also
89     use it to implement an IRC server.
90 elmex 1.1
91 elmex 1.9 Note that the *::Connection module uses AnyEvent as it's IO event subsystem.
92     You can integrate them into any application with a event system
93 elmex 1.4 that AnyEvent has support for (eg. L<Gtk2> or L<Event>).
94    
95 elmex 1.2 =head1 EXAMPLES
96 elmex 1.1
97 elmex 1.2 See the samples/ directory for some examples on how to use Net::IRC3.
98 elmex 1.1
99     =head1 AUTHOR
100    
101     Robin Redeker, C<< <elmex@ta-sa.org> >>
102    
103     =head1 SEE ALSO
104    
105 elmex 1.14 L<Net::IRC3::Util>
106    
107 elmex 1.2 L<Net::IRC3::Connection>
108    
109 elmex 1.11 L<Net::IRC3::Client::Connection>
110 elmex 1.2
111 elmex 1.4 L<AnyEvent>
112    
113 elmex 1.1 RFC 2812 - Internet Relay Chat: Client Protocol
114    
115     =head1 BUGS
116    
117     Please report any bugs or feature requests to
118     C<bug-net-irc3 at rt.cpan.org>, or through the web interface at
119     L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-IRC3>.
120     I will be notified, and then you'll automatically be notified of progress on
121     your bug as I make changes.
122    
123     =head1 SUPPORT
124    
125     You can find documentation for this module with the perldoc command.
126    
127     perldoc Net::IRC3
128    
129     You can also look for information at:
130    
131     =over 4
132    
133     =item * AnnoCPAN: Annotated CPAN documentation
134    
135     L<http://annocpan.org/dist/Net-IRC3>
136    
137     =item * CPAN Ratings
138    
139     L<http://cpanratings.perl.org/d/Net-IRC3>
140    
141     =item * RT: CPAN's request tracker
142    
143     L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Net-IRC3>
144    
145     =item * Search CPAN
146    
147     L<http://search.cpan.org/dist/Net-IRC3>
148    
149     =back
150    
151     =head1 ACKNOWLEDGEMENTS
152    
153     Thanks to Marc Lehmann for the new AnyEvent module!
154    
155     =head1 COPYRIGHT & LICENSE
156    
157 elmex 1.10 Copyright 2006 Robin Redeker, all rights reserved.
158 elmex 1.1
159     This program is free software; you can redistribute it and/or modify it
160     under the same terms as Perl itself.
161    
162     =cut
163    
164     1;