=encoding utf8

=head1 NAME

POE::Component::IRC::Cookbook::Disconnecting - How to disconnect gracefully
with PoCo-IRC

=head1 SYNOPSIS

Shutting down an IRC bot can be quick and messy, or slow and graceful. 

=head1 DESCRIPTION

There are two ways you can shut down an IRC bot/client. The quick and dirty way
is rather simple:

 exit;

It exits the program, shutting down the socket, and everybody online sees yet
another "Connection reset by peer" or "Remote end closed the socket" or
something.

There's a little dance you can do to send a quit message and log out
gracefully. It goes like this: 

=over

=item *

If you're L<logged in|POE::Component::IRC/logged_in> to an IRC server, send
the L<C<quit>|POE::Component::IRC/quit> command with your quit message and
wait for an L<C<irc_disconnected>|POE::Component::IRC/irc_disconnected> event
to come back.

=item *

Do either of the following:

=over

=item *

Unregister all events. This is like the C<< register => 'all' >> you probably
posted near the L<C<connect>|POE::Component::IRC/connect> command, but replace
L<C<register>|POE::Component::IRC/register> with
L<C<unregister>|POE::Component::IRC/unregister>. Once POE::Component::IRC
knows your session isn't interested, it lets you go and things shut down.

=item *

If your session is the last/only one using this IRC component, you can post
a L<C<shutdown>|POE::Component::IRC/shutdown> event to it. It will take care
of unregistering all events.

=back

=back

=head1 AUTHOR

Rocco Caputo (I think). PODified by Hinrik E<Ouml>rn SigurE<eth>sson.

