Cover | Table of Contents | Colophon
http://bersirc.free2code.net) and ChatZilla
[Hack #4]
.
This can be partly attributed to its ease
of use, but seasoned IRC users will also find that it provides all of
the powerful features they want. mIRC provides extensive scripting
support, and thousands of mIRC scripts are available on the Web. mIRC
is under active development.http://www.mirc.com. Like most Windows
software, installation is quite straightforward, and it will offer
you the chance to create a desktop icon to run it. The first time you
run mIRC, it will pop up the Connect dialog automatically, where you
must provide some details (as in Figure 1-1).
http://bersirc.free2code.net) and ChatZilla
[Hack #4]
.
This can be partly attributed to its ease
of use, but seasoned IRC users will also find that it provides all of
the powerful features they want. mIRC provides extensive scripting
support, and thousands of mIRC scripts are available on the Web. mIRC
is under active development.http://www.mirc.com. Like most Windows
software, installation is quite straightforward, and it will offer
you the chance to create a desktop icon to run it. The first time you
run mIRC, it will pop up the Connect dialog automatically, where you
must provide some details (as in Figure 1-1).
http://xchat.org, either as source code or in
the form of precompiled binaries or packages. If you have a
packaging system such as
apt or Gentoo's
emerge, then you may be able to get away with
apt-get xchat or emerge xchat.Bob, Bob_, Bobby Foo, FooBar, Foo_Bar CoolDude, Cool_Dude, Kewld00d
http://fire.sourceforge.net), combine IRC
chat with
ICQ, AIM, and
JabberIM. However, because the features of IRC are different than the
set for other chat applications, IRC users may find themselves
frustrated with these programs. The server-channel model is not
clearly supported, and sending standard IRC commands is difficult
when they are not all fully supported. One of the friendliest and
three of the more popular, and more powerful, IRC clients available
for OS X are presented here: Conversation, X-Chat Aqua, Snak, and
IRCle.http://www.conversation.pwp.blueyonder.co.uk)
is about as close as you'll come to using iChat for
IRC. It sports a rather iChat-like look-and-feel (Figure 1-3) with just about everything accessible through
an intuitive set of buttons and switches and drag-and-drop support
throughout. A Favorites list holds your best buddies and preferred
channels so you can just log on and click your way to conversation. A
Recent Channels and Users list helps you find that person you were
chatting with yesterday or where you had that fabulous conversation
last week. Or just set things up so you automatically log in and join
your various discussion channels automatically.
http://home.netscape.org/downloads or Mozilla
from http://mozilla.org.http://www.hacksrus.com/~ginda/chatzilla.
This page contains news and installers. Toward the bottom of the
page, you will find the Download section. Several revisions will be
listed in the table. If the version has a yellow star next to it,
this means the release is probably stable but may contain some bugs.
Releases that are expected to be stable will be marked with a green
tick. Every version will contain a list of any reported bugs, so you
can decide which one you want to install.
op
+o flag in a channel. Usually has the
@ prefix in the username.+o. Used with omitted subject
"me" as a request.<lamer> op /mode # channel +o lamer * idiot sets mode +o lamer
oper
<w8> TsTech is an oper, right?
User Password
msg
(short for privmsg)[lamer(idiot@some-host.com)] you're cool
register message to NickServ. To do this on the
freenode IRC network, open a query with NickServ and send the
register message like this:<Wilmer> register password <NickServ> Your nickname is now registered under the hostmask [*~blabla@*.ipv6.gaast.net]. <NickServ> Your password is [password]. Please remember this for later use. <NickServ> Freenode is a service of Peer-Directed Projects Center, an <NickServ> IRS 501(c)(3) (tax-exempt) charitable and educational organization. <NickServ> For frequently-asked questions about the network, please see the <NickServ> FAQ page (http://freenode.net/faq.shtml).
help command via a private
message:
/msg ChanServ help
http://www.quakenet.org.
/msg Q HELLO
chatterbox@wanttochat.com chatterbox@wanttochat.com
-Q- Hello, ChatterBox. A new user account has been created for you, with nick ChatterBox.
-Q- OK, Your login information has been sent to "chatterbox@wanttochat.com".
please check your email for further instructions.
/msg Q
@CServe.quakenet.org AUTH ChatterBox passwordhttp://irc.netsplit.de/channels. This is
maintained by Andreas Gelhausen and uses a collection of IRC bots to
connect to hundreds of IRC networks and collect data.http://irc.netsplit.de/channels. This is
maintained by Andreas Gelhausen and uses a collection of IRC bots to
connect to hundreds of IRC networks and collect data.
http://irc.netsplit.de/channels to view
statistics about networks and servers. Figure 3-2
shows the growth of the freenode IRC network over the past
five years./who or
/whois command, which reveals information about a
user
[Hack #15]
, or maybe you have
the hostname already. Most IRC clients will offer you the option of
displaying it when a person joins or parts the channel.http://www.timezoneconverter.com). You can
see it in action in Figure 3-3. If you
don't know the capital of the country, open the
Lookup Time Zone by Country link on the left.
http://pisg.sourceforge.net and
is one of the most popular IRC statistics generators in use today.
This hack will show you how to use it to create amusing statistics
for your channels and display them to everybody on the Web.<channel="#irchacks"> Logfile = "#irchacks.freenode.log" Format = "mIRC" Maintainer = "Bob" OutputFile = "irchacks.html" </channel>
% ./pisg
!seen
robot, which records the
time of the last visit of a given
person (usually identified by her nick), and you want to check
whether the queried nick is actually present on the channel.NAMES #channel
command. This is the command that is
automatically executed whenever you join a channel. The command
returns a few lines of 353 numeric, ending with the 366 numeric
[Hack #78]
. One sample line could look
like this::x.fn.net 353 nickseek @ #irchacks :DeadEd MD87 Monty dg @Jibbler +elvum +pasky
@
,
half-opped users will start with
%, and
voiced users
will start with +. However,
there's a danger here: if the user is both opped and
voiced, only the op status will be shown in the
NAMES list. When the user loses his op status, he
will still be voiced, but you will not know about it. Even some
popular IRC clients suffer from this problem, unfortunately.LIST command, which returns
the list of all public channels, together with their topic and number
of users.#!/usr/bin/perl -w
# filterlist.pl - Filter a list of channels based on given criteria.
# MIT licence, (c) Petr Baudis <pasky@ucw.cz>.
use strict;
### Configuration section.
use vars qw ($nick $server $port);
$nick = 'filtelst';
$server = 'irc.freenode.net';
$port = 6667;
### Preamble.
use Net::IRC;
### Arguments munching and data structures setup.
# Arguments.
use vars qw ($chanre $topicre $userlimit);
($chanre, $topicre, $userlimit) = @ARGV;
$chanre ||= ''; $topicre ||= ''; $userlimit ||= 0;
# Precompile the patterns.
$chanre = qr/$chanre/i;
$topicre = qr/$topicre/i;
# List of matched channels, and maximal length of each field for pretty-printing.
use vars qw (@channels $chanlen $userlen);
# This will eventually print out the channels list when it gets called.
sub list_channels {
my (@channels) = @_;
foreach my $chan (@channels) {
my ($channel, $topic, $usercount) = @$chan;
printf ("\%-${chanlen}s \%${userlen}d \%s\n", $channel, $usercount, $topic);
}
}
### Connection initialization.
use vars qw ($irc $conn);
$irc = new Net::IRC;
$conn = $irc->newconn (Nick => $nick, Server => $server, Port => $port,
Ircname => 'Channels List Filter');
### The event handlers.
# Connect handler - we immediately try to get the channels list.
sub on_connect {
my ($self, $event) = @_;
$self->list ( );
}
$conn->add_handler ('welcome', \&on_connect);
# Received one channel item.
sub on_list {
my ($self, $event) = @_;
my (undef, $channel, $usercount, $topic) = $event->args;
# Filter.
return unless ($channel =~ $chanre);
return unless ($topic =~ $topicre);
return unless ($userlimit == 0
or ($userlimit < 0 ? $usercount <= -$userlimit
: $usercount >= $userlimit));
# Enqueue for listing.
push (@channels, [ $channel, $topic, $usercount ]);
# Update the pretty-printing skids.
$^W = 0; # Undefined $chanlen.
$chanlen = length ($channel) if (length ($channel) > $chanlen);
$userlen = length ($usercount) if (length ($usercount) > $userlen);
$^W = 1;
}
$conn->add_handler ('list', \&on_list);
# Received the whole channels list.
sub on_listend {
my ($self, $event) = @_;
list_channels (@channels);
exit;
}
$conn->add_handler ('listend', \&on_listend);
# Fire up the IRC loop.
$irc->start;