if you are on a unrealircd with anope .. you can set a room mode that may help.. it is mode j
an example would be something like /mode #channel +j 1:3 that is a part/join protection mode where x is the number of joins and y is the number of seconds. also set a flood mode eg /mode #channel +f [5j#R2]5 that would be 5 joins in 5 secs to tigger mode R (registered users only may join) for 2 mins. mode j is per user.. mode f is global. between the 2 of them you should be able to protect against botnets but like i say that is purely for unrealircds