Source code for platypush.message.event.chat.slack

from abc import ABCMeta
from datetime import datetime
from typing import Union, Optional, Iterable

from dateutil.tz import gettz

from platypush.message.event import Event


[docs] class SlackEvent(Event, ABCMeta): """ Base class for Slack events. """
[docs] def __init__(self, *args, timestamp: Optional[Union[int, float, datetime]] = None, **kwargs): """ :param timestamp: Event timestamp. """ kwargs['event_time'] = self._convert_timestamp(timestamp) super().__init__(*args, **kwargs)
@staticmethod def _convert_timestamp(timestamp: Optional[Union[int, float, datetime]] = None) -> Optional[datetime]: if not (isinstance(timestamp, int) or isinstance(timestamp, float)): return timestamp return datetime.fromtimestamp(timestamp, tz=gettz()) # lgtm [py/call-to-non-callable]
[docs] class SlackMessageEvent(SlackEvent, ABCMeta): # lgtm [py/conflicting-attributes] """ Base class for message-related events. """
[docs] def __init__(self, *args, text: str, user: str, channel: Optional[str] = None, team: Optional[str] = None, icons: dict = None, blocks: Iterable[dict] = None, **kwargs): """ :param text: Message text. :param user: ID of the sender. :param channel: ID of the channel. :param team: ID of the team. :param icons: Mapping of the icons for this message. :param blocks: Extra blocks in the message. """ super().__init__(*args, text=text, user=user, channel=channel, team=team, icons=icons, blocks=blocks, **kwargs)
[docs] class SlackMessageReceivedEvent(SlackMessageEvent): """ Event triggered when a message is received on a monitored resource. """
[docs] class SlackMessageEditedEvent(SlackMessageEvent): """ Event triggered when a message is edited on a monitored resource. """
[docs] class SlackMessageDeletedEvent(SlackMessageEvent): """ Event triggered when a message is deleted from a monitored resource. """
[docs] class SlackAppMentionReceivedEvent(SlackMessageEvent): """ Event triggered when a message that mentions the app is received on a monitored resource. """
# vim:sw=4:ts=4:et: