AnyEvent-IRC
view release on metacpan or search on metacpan
lib/AnyEvent/IRC/Client.pm view on Meta::CPAN
"${old_nick}_"
};
$self->_setup_internal_dcc_handlers;
$self->cleanup;
return $self;
}
sub cleanup {
my ($self) = @_;
$self->{channel_list} = { };
$self->{isupport} = { };
$self->{casemap_func} = $LOWER_CASEMAP{rfc1459};
$self->{prefix_chars} = '@+';
$self->{prefix2mode} = { '@' => 'o', '+' => 'v' };
$self->{channel_chars} = '#&';
$self->{change_nick_cb_guard} =
$self->reg_cb (
irc_437 => \&change_nick_login_cb,
irc_433 => \&change_nick_login_cb,
);
delete $self->{away_status};
delete $self->{dcc};
delete $self->{dcc_id};
delete $self->{_tmp_namereply};
delete $self->{last_pong_recv};
delete $self->{last_ping_sent};
delete $self->{_ping_timer};
delete $self->{con_queue};
delete $self->{chan_queue};
delete $self->{registered};
delete $self->{idents};
delete $self->{nick};
delete $self->{user};
delete $self->{real};
delete $self->{server_pass};
delete $self->{register_cb_guard};
}
=item $cl->connect ($host, $port)
=item $cl->connect ($host, $port, $info)
This method does the same as the C<connect> method of L<AnyEvent::Connection>,
but if the C<$info> parameter is passed it will automatically register with the
IRC server upon connect for you, and you won't have to call the C<register>
method yourself. If C<$info> only contains the timeout value it will not
automatically connect, this way you can pass a custom connect timeout value
without having to register.
The keys of the hash reference you can pass in C<$info> are:
nick - the nickname you want to register as
user - your username
real - your realname
password - the server password
timeout - the TCP connect timeout
All keys, except C<nick> are optional.
=cut
sub connect {
my ($self, $host, $port, $info) = @_;
my $timeout = delete $info->{timeout};
if (defined $info and keys %$info) {
$self->{register_cb_guard} = $self->reg_cb (
ext_before_connect => sub {
my ($self, $err) = @_;
unless ($err) {
$self->register (
$info->{nick}, $info->{user}, $info->{real}, $info->{password}
);
}
delete $self->{register_cb_guard};
}
);
}
$self->SUPER::connect ($host, $port, $timeout);
}
=item $cl->register ($nick, $user, $real, $server_pass)
Sends the IRC registration commands NICK and USER.
If C<$server_pass> is passed also a PASS command is generated.
NOTE: If you passed the nick, user, etc. already to the C<connect> method
you won't need to call this method, as L<AnyEvent::IRC::Client> will do that
for you.
=cut
sub register {
my ($self, $nick, $user, $real, $pass) = @_;
$self->{nick} = $nick;
$self->{user} = $user;
$self->{real} = $real;
$self->{server_pass} = $pass;
$self->send_msg ("PASS", $pass) if defined $pass;
$self->send_msg ("NICK", $nick);
$self->send_msg ("USER", $user || $nick, "*", "0", $real || $nick);
}
=item $cl->set_nick_change_cb ($callback)
This method lets you modify the nickname renaming mechanism when registering
the connection. C<$callback> is called with the current nickname as first
argument when a ERR_NICKNAMEINUSE or ERR_UNAVAILRESOURCE error occurs on login.
The return value of C<$callback> will then be used to change the nickname.
If C<$callback> is not defined the default nick change callback will be used
again.
The default callback appends '_' to the end of the nickname supplied in the
C<register> routine.
If the callback returns the same nickname that was given it the connection
will be terminated.
=cut
sub set_nick_change_cb {
my ($self, $cb) = @_;
$cb = $self->{def_nick_change} unless defined $cb;
$self->{nick_change} = $cb;
}
=item $cl->nick ()
( run in 0.881 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )