chan = addChannel(argv[0]);
chanuser = addChanUser(chan, user);
chanuser->visCount = 1;
+ chan->botcount = 1;
get_userlist_with_invisible(chan, 0, got_channel_userlist, chanuser);
putsock(client, "MODE %s", chan->name);
putsock(client, "MODE %s +b", chan->name);
chanuser = addChanUser(chan, user);
chanuser->visCount = 1;
+ chan->botcount++;
if(isModeSet(chan->modes, 'D')) //if the bot joins a channel it could also be invisible
chanuser->flags |= CHANUSERFLAG_INVISIBLE;
if(isModeSet(chan->modes, 'D')) //if the bot joins a channel it could also be invisible
chanuser->flags |= CHANUSERFLAG_INVISIBLE;
increase_viscount_butone(chan, chanuser);
+ chan->botcount++;
}
event_join(chanuser);
chanuser = getChanUser(user, chan);
chanuser->visCount++;
- if(isBot(user) && client->user == user)
+ if(isBot(user) && client->user == user) {
increase_viscount_butone(chan, chanuser);
+ chan->botcount++;
+ }
+
+ if(chanuser->visCount > chan->botcount) {
+ chanuser->visCount = chan->botcount;
+ //TODO: Trigger WARNING
+ }
//if multiple bots see the user, it can't be invisible
chanuser->flags &= ~CHANUSERFLAG_INVISIBLE;
DESYNCHRONIZE(cache_sync);
return 0;
}
- if(isBot(user) && user == client->user)
+ if(isBot(user) && user == client->user) {
decrease_viscount_butone(chan, chanuser);
+ chan->botcount--;
+ }
chanuser->visCount--;
if(chanuser->visCount == 0) {
delChanUser(chanuser, 0); //not free, yet!
DESYNCHRONIZE(cache_sync);
return 0;
}
- if(isBot(target) && target == client->user)
+ if(isBot(target) && target == client->user) {
decrease_viscount_butone(chan, chanuser);
+ chan->botcount--;
+ }
chanuser->visCount--;
if(chanuser->visCount == 0) {
delChanUser(chanuser, 0); //not free, yet!
for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next_chanuser) {
next_chanuser = getUserChannels(user, chanuser);
decrease_viscount_butone(chanuser->chan, chanuser);
+ chanuser->chan->botcount--;
chanuser->visCount--;
if(chanuser->visCount <= 0) {
delChanUser(chanuser, 0); //not free, yet!