Well, as you say, that is a BAD channel scanner, though not in the way you meant bad. :tongue:
1. That would require you to be on every channel listed as bad, or you won't know "if ($nick ison <it>)". ("while" is an "if" statement)
2. It also will attempt to ban & kick $nick once for every "bad" channel they are on. Kicking a user more than once will cause errors.
3. $readini is slow, suppose after a netsplit, when 20 users re-join, and there were 10 channels listed as "bad". The script does $readini() 10 times for each nick, 20 x 10 = 200 $readini's. Even worse, it also checks the next channel before returning to the while condition. That makes a total of 20 x 20 x $readini
Personal opinion: If you don't like seeing that other users are on certain channels, don't look at the channels they are on. It isn't like you have to avoid this info, it is NOT shown to you by default, you have to actually seek it out.