generic bot class