Looks nice, but why a hash table per channel? I'd use something like this then.

on !*:join:#channel:hinc -mu60 revolve $+(#,\,$site) $ctime
on @*:part:#channel:if $hget(revolve, $+(#,\,$site)) { ban -u3600 # $site }