bot/basehandlers: run hooks on client joins