Skip to content

Events

BaseMessage pydantic-model

Bases: ABC, BaseModel

Shared shape and fields common to every received event.

Fields:

  • server_delivered_timestamp (int)
  • server_received_timestamp (int)
  • source (str | None)
  • source_device (int | None)
  • source_name (str | None)
  • source_number (str | None)
  • source_uuid (str | None)
  • timestamp (int)
Source code in src/signalbot/events.py
class BaseMessage(ABC, BaseModel):
    """Shared shape and fields common to every received event."""

    server_delivered_timestamp: int
    server_received_timestamp: int
    source: str | None = Field(default=None, deprecated=True)
    source_device: int | None = None
    source_name: str | None = None
    source_number: str | None = None
    source_uuid: str | None = None
    timestamp: int

    @abstractmethod
    def is_group(self) -> bool:
        """Check if the message is a group message.

        Returns:
            True if the message is a group message, False otherwise.
        """

    @abstractmethod
    def is_private(self) -> bool:
        """Check if the message is a private (one-on-one) message.


        Returns:
            True if the message is a private (one-on-one) message, False otherwise.
        """

    @abstractmethod
    def source_or_group_id(self) -> str:
        """Get the source of the message.

        Returns:
            The source of the message.
        """

is_group abstractmethod

is_group() -> bool

Check if the message is a group message.

Returns:

Type Description
bool

True if the message is a group message, False otherwise.

Source code in src/signalbot/events.py
@abstractmethod
def is_group(self) -> bool:
    """Check if the message is a group message.

    Returns:
        True if the message is a group message, False otherwise.
    """

is_private abstractmethod

is_private() -> bool

Check if the message is a private (one-on-one) message.

Returns:

Type Description
bool

True if the message is a private (one-on-one) message, False otherwise.

Source code in src/signalbot/events.py
@abstractmethod
def is_private(self) -> bool:
    """Check if the message is a private (one-on-one) message.


    Returns:
        True if the message is a private (one-on-one) message, False otherwise.
    """

source_or_group_id abstractmethod

source_or_group_id() -> str

Get the source of the message.

Returns:

Type Description
str

The source of the message.

Source code in src/signalbot/events.py
@abstractmethod
def source_or_group_id(self) -> str:
    """Get the source of the message.

    Returns:
        The source of the message.
    """

BaseMessageWithGroup pydantic-model

Bases: BaseMessage

BaseMessage variant for events that may originate from a group.

Fields:

  • server_delivered_timestamp (int)
  • server_received_timestamp (int)
  • source (str | None)
  • source_device (int | None)
  • source_name (str | None)
  • source_number (str | None)
  • source_uuid (str | None)
  • timestamp (int)
  • group_info (GroupInfo | None)
Source code in src/signalbot/events.py
class BaseMessageWithGroup(BaseMessage):
    """BaseMessage variant for events that may originate from a group."""

    group_info: GroupInfo | None = None

    def is_group(self) -> bool:

        return self.group_info is not None and self.group_info.group_id is not None

    def is_private(self) -> bool:

        return not self.is_group()

    def source_or_group_id(self) -> str:

        if self.group_info is not None and self.group_info.group_id is not None:
            return self.group_info.group_id

        if self.source_uuid is not None:
            return self.source_uuid

        if self.source_number is not None:
            return self.source_number

        error_msg = "Message does not contain a source"
        raise ValueError(error_msg)

GroupInfo pydantic-model

Bases: GroupInfo

The group a received event originated from, if any.

Fields:

  • group_id (str | None)
  • group_name (str | None)
  • revision (int)
  • type (str | None)
Source code in src/signalbot/events.py
class GroupInfo(GeneratedGroupInfo):
    """The group a received event originated from, if any."""