def METHOD_NAME(self, addon: Addon, service: str, config: dict[str, Any]) -> Message:
    """Send a discovery message to Home Assistant."""
    try:
        config = valid_discovery_config(service, config)
    except vol.Invalid as err:
        _LOGGER.error("Invalid discovery %s config", humanize_error(config, err))
        raise DiscoveryError() from err
    # Create message
    message = Message(addon.slug, service, config)
    # Already exists?
    for exists_msg in self.list_messages:
        if exists_msg != message:
            continue
        if exists_msg.config != config:
            message = exists_msg
            message.config = config
        else:
            _LOGGER.debug("Duplicate discovery message from %s", addon.slug)
            return exists_msg
        break
    _LOGGER.info(
        "Sending discovery to Home Assistant %s from %s", service, addon.slug
    )
    self.message_obj[message.uuid] = message
    self.save()
    self.sys_create_task(self._push_discovery(message, CMD_NEW))
    return message