code: async def on_isupport_chanmodes(self, value):
          
          list, param, param_set, noparams = [ set(modes) for modes in value.split(',')[:4] ]
          self._channel_modes.update(set(value.replace(',', '')))
  
          # The reason we have to do it like this is because other ISUPPORTs (e.g. PREFIX) may update these values as well.
          if not rfc1459.protocol.BEHAVIOUR_LIST in self._channel_modes_behaviour:
              self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_LIST] = set()
          self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_LIST].update(list)
  
          if not rfc1459.protocol.BEHAVIOUR_PARAMETER in self._channel_modes_behaviour:
              self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_PARAMETER] = set()
          self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_PARAMETER].update(param)
  
          if not rfc1459.protocol.BEHAVIOUR_PARAMETER_ON_SET in self._channel_modes_behaviour:
              self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_PARAMETER_ON_SET] = set()
          self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_PARAMETER_ON_SET].update(param_set)
  
          if not rfc1459.protocol.BEHAVIOUR_NO_PARAMETER in self._channel_modes_behaviour:
              self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_NO_PARAMETER] = set()
          self._channel_modes_behaviour[rfc1459.protocol.BEHAVIOUR_NO_PARAMETER].update(noparams)
docs: Valid channel modes and their behaviour.