1 """The slack integration."""
3 from __future__
import annotations
7 from aiohttp.client_exceptions
import ClientError
8 from slack
import WebClient
9 from slack.errors
import SlackApiError
27 _LOGGER = logging.getLogger(__name__)
29 PLATFORMS = [Platform.NOTIFY, Platform.SENSOR]
31 CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
34 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
35 """Set up the Slack component."""
36 hass.data[DATA_HASS_CONFIG] = config
41 """Set up Slack from a config entry."""
42 session = aiohttp_client.async_get_clientsession(hass)
43 slack = WebClient(token=entry.data[CONF_API_KEY], run_async=
True, session=session)
46 res = await slack.auth_test()
47 except (SlackApiError, ClientError)
as ex:
48 if isinstance(ex, SlackApiError)
and ex.response[
"error"] ==
"invalid_auth":
49 _LOGGER.error(
"Invalid API key")
54 ATTR_URL: res[ATTR_URL],
55 ATTR_USER_ID: res[ATTR_USER_ID],
57 hass.data.setdefault(DOMAIN, {})[entry.entry_id] = entry.data | {SLACK_DATA: data}
59 hass.async_create_task(
60 discovery.async_load_platform(
64 hass.data[DOMAIN][entry.entry_id],
65 hass.data[DATA_HASS_CONFIG],
69 await hass.config_entries.async_forward_entry_setups(
70 entry, [platform
for platform
in PLATFORMS
if platform != Platform.NOTIFY]
bool async_setup(HomeAssistant hass, ConfigType config)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)