- delUser(user, 0);
- event_quit(user, "disconnected");
- for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next) {
- next = getUserChannels(user, chanuser);
- if(chanuser->chan->chanbot == user)
- checkChannelVisibility(chanuser->chan);
- freeChanUser(chanuser);
+ if(is_onlyBotSeeUser(client, user)) {
+ //ok the bot-user is not seen by any other bots so we can simply free it.
+ delUser(user, 0);
+ event_quit(user, "disconnected");
+ for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next) {
+ next = getUserChannels(user, chanuser);
+ if(chanuser->chan->chanbot == user)
+ checkChannelVisibility(chanuser->chan);
+ freeChanUser(chanuser);
+ }
+ user->channel = NULL;
+ delUser(user, 1); //now we fully free the user
+ } else {
+ //we need to transform the bot-user back to a normal user (BNC FIX)
+ user->flags &= ~USERFLAG_ISBOT;
+ for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next) {
+ next = getUserChannels(user, chanuser);
+ if(chanuser->chan->chanbot == user)
+ checkChannelVisibility(chanuser->chan);
+ }