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, 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: