I don't really think it would be massive overhead if you just do the following and then you don't have to worry about whether or not they identify later.
- User tries using a bot command.
- If the user isn't in the hash table of registered nicks, check if the nick is registered.
- If so, add the nick to the hash table. This won't have to be done again unless the nick leaves the channel.
- If not, don't do anything with the nick, but put in a delay before checking again so the user cannot spam the bot commands without being registered. Make it something like once every 10-30 seconds. If the user identifies, then after the timer is done, the nick will be added to the hash table the next time a bot command is done by that user. They will still have to wait for the 10-30 seconds before being allowed to use the commands, but that's not a big problem, imo.
- When a person leaves the channel (part/quit), remove them from the hash table if they are in the table.
- When a person changes their nick, update their nick in the hash table if they are in the table.
This way, you don't have a lot of overhead because: You aren't checking everyone. You are only checking a registered user once. You are only checking an unregistered user once ever X seconds and only if a command is used. You don't check anyone who isn't playing the game.
That should work alright, I think.