This depends on three things:
- If you need to receive the JOIN- and PART messages you need a connection in default or “TWITCHCLIENT 1” mode (which you already have). Read more in this thread for example. If you also need user metadata from jtv, you need a separate connection for the same channel in “TWITCHCLIENT 3” mode. I recommend using IRCv3 instead. This way you also don’t need to parse MODE messages and keep a record of current mods.
- If you want to send messages beyond the limit of 100 messages every 30 seconds (for modded users, per connection), you need additional connections so that you don’t get IP banned. Even if this is not something you want, I recommend that you guard yourself by either rate limiting or automating more connections.
- There is also a remote possibility that you will be disconnected from a connection if it receives too many messages. To be safe you can spread it evenly so that channels with a heavy load are on a single connection and several channels with a light load are on another.
Because of this complicated nature, I think the best approach would not be a parent-child relationship, but the current configuration of connections should be hidden from the bots and their channels in a separate Connection Manager of sorts.
My guess is that you would be fine with irc.twitch.tv, as this works as a domain name that would be translated into a random available IP address. If that server goes down, reconnecting to the same domain should give you another address. I don’t see how this affects your class hierarchy.