event_registered(user, from);
user->flags &= ~USERFLAG_WAS_REGISTERING;
} else if(!(chan->flags & CHANFLAG_RECEIVED_USERLIST)) {
- if(!isBot(user)) {
+ if(client->user != user) { //bots are allowed to add themselves
DESYNCHRONIZE(cache_sync);
return 1; //ignore join
}
for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next_chanuser) {
next_chanuser = getUserChannels(user, chanuser);
chanuser->visCount--;
- if(chanuser->visCount <= 0) {
+ if(chanuser->visCount <= 0 && !(user->flags & USERFLAG_WAS_REGISTERING)) {
delChanUser(chanuser, 0); //not free, yet!
event_part(chanuser, 1, argv[0]);
if((chanuser->chan->flags & CHANFLAG_RECEIVED_USERLIST) && !(chanuser->chan->flags & CHANFLAG_REJOINING))