Players won't spawn when they join the phoenix class of the terrorists team. The following line (#243):
Should be something like:
elif args[0].lower() == 'jointeam' and int(args[1]) == 1:
Otherwise "joinclass 1" is considered "jointeam 1" and you get the message "You will respawn when you join a team.". Anyways, I think the best is to directly use the player_team event cause your filter will not catch when a player is switched spectator by an admin/script. Also, you may want to do more testing into your filter cause if someone use "joinclass" without parameter that will raise an exception cause you are doing:
if not len(args) # a ClientCommandFilter should not execute without a command...
Instead of:
On the line #237. If a spectator use "joinclass 2" the script will attempt to spawn him cause you don't check if the player is in a valid team before starting his repeat. Finally, if someone use "joinclass blah" that will also raise an exception cause you convert args[1] into int without check if the value is digit first.
Here are my finds after testing it on the daggerclan's server (I wondered why I didn't spawn when I joined the terrorists team. ^^).