+sub on_whoischannels {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+
+ &DEBUG("on_whoischannels: @args");
+}
+
+sub on_useronchannel {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+
+ &DEBUG("on_useronchannel: @args");
+ &joinNextChan();
+}
+
+###
+### since joinnextchan is hooked onto on_endofnames, these are needed.
+###
+
+sub on_chanfull {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+
+ &status(">>> chanfull/$b_blue$args[1]$ob");
+
+ &joinNextChan();
+}
+
+sub on_inviteonly {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+
+ &status(">>> inviteonly/$b_cyan$args[1]$ob");
+
+ &joinNextChan();
+}
+
+sub on_banned {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+ my $chan = $args[1];
+
+ &status(">>> banned/$b_blue$chan$ob $b_cyan$args[0]$ob, removing autojoin for $chan");
+ delete $chanconf{$chan}{autojoin};
+ &joinNextChan();
+}
+
+sub on_badchankey {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+ my $chan = $args[1];
+
+ &DEBUG("on_badchankey: args => @args, removing autojoin for $chan");
+ delete $chanconf{$chan}{autojoin};
+ &joinNextChan();
+}
+
+sub on_useronchan {
+ $conn = shift(@_);
+ my ($event) = @_;
+ my @args = $event->args;
+
+ &DEBUG("on_useronchan: args => @args");
+ &joinNextChan();
+}
+
+# TODO not used yet
+sub on_stdin {
+ my $line = <STDIN>;
+ chomp($line);
+ &FIXME("on_stdin: line => \"$line\"");
+}
+