code: function parseTarget(str) {
  	let match;
  	if (str.match(/^[#&+.~][^\s]{1,99}|![A-Z0-5]{5}[^\s]{1,94}$/)) {
  		return new ChannelTarget(str);
  	} else if (match = str.match(/^([a-z_\-\[\]\\^{}|`][a-z0-9_\-\[\]\\^{}|`]*)(?:@([^@]+))?$/i)) {
  		return new ClientTarget(match[1], match[2]);
  	} else {
  		return null;
  	}
  }
docs: Possible channel types: & # + ! . ~