It's a bit unintuitive to set the channel mode when creating an instance of the SonicChannel client while still allowing potentially unsupported methods to be called. These methods return an UnsupportedCommand error, which we could easily conclude at compile-time rather than run-time. I think the easiest and most intuitive way around this would be to make separate structs for each of the three channel modes and only add the allowed methods for that channel mode to each struct. I'm happy to work on it too, if you like the idea!
It's a bit unintuitive to set the channel mode when creating an instance of the SonicChannel client while still allowing potentially unsupported methods to be called. These methods return an UnsupportedCommand error, which we could easily conclude at compile-time rather than run-time. I think the easiest and most intuitive way around this would be to make separate structs for each of the three channel modes and only add the allowed methods for that channel mode to each struct. I'm happy to work on it too, if you like the idea!