def add_channels!(channels, conf)
      channels.each_key do |identifier|
        if @channels.any? { |chan| chan.identifier_eql?(identifier) }
          raise CommandError, "channel #{identifier.inspect} already exists"
        end
      end
      new_channels = Channel.deserialize_all(channels, conf)
      @channels.push(*new_channels)
    end
def add_channels!(channels, conf)
      channels.each_key do |identifier|
        if @channels.any? { |chan| chan.identifier_eql?(identifier) }
          raise CommandError, "channel #{identifier.inspect} already exists"
        end
      end
      new_channels = Channel.deserialize_all(channels, conf)
      @channels.push(*new_channels)
    end
Adds the specified channels to this integration.

 @note This method is not thread-safe and should only be called from an
       active transaction.
 @param channels [Hash] the channel data to add
 @param conf [Hash] the previously deserialized configuration
 @raise [CommandError] if one of the channel identifiers already exists