Module slack_bolt.adapter.socket_mode.base_handler

The base class of Socket Mode client implementation. If you want to build asyncio-based ones, use AsyncBaseSocketModeHandler instead.

Classes

class BaseSocketModeHandler
Expand source code
class BaseSocketModeHandler:
    app: App
    client: BaseSocketModeClient

    def handle(self, client: BaseSocketModeClient, req: SocketModeRequest) -> None:
        """Handles Socket Mode envelope requests through a WebSocket connection.

        Args:
            client: this Socket Mode client instance
            req: the request data
        """
        raise NotImplementedError()

    def connect(self):
        """Establishes a new connection with the Socket Mode server"""
        self.client.connect()

    def disconnect(self):
        """Disconnects the current WebSocket connection with the Socket Mode server"""
        self.client.disconnect()

    def close(self):
        """Disconnects from the Socket Mode server and cleans the resources this instance holds up"""
        self.client.close()

    def start(self):
        """Establishes a new connection and then blocks the current thread
        to prevent the termination of this process.
        If you don't want to block the current thread, use `#connect()` method instead.
        """
        self.connect()
        if self.app.logger.level > logging.INFO:
            print(get_boot_message())
        else:
            self.app.logger.info(get_boot_message())

        if sys.platform == "win32":
            # Ctrl+C etc does not work on Windows OS
            # see https://bugs.python.org/issue35935 for details
            signal.signal(signal.SIGINT, signal.SIG_DFL)

        Event().wait()

Subclasses

Class variables

var appApp

The type of the None singleton.

var client : slack_sdk.socket_mode.client.BaseSocketModeClient

The type of the None singleton.

Methods

def close(self)
Expand source code
def close(self):
    """Disconnects from the Socket Mode server and cleans the resources this instance holds up"""
    self.client.close()

Disconnects from the Socket Mode server and cleans the resources this instance holds up

def connect(self)
Expand source code
def connect(self):
    """Establishes a new connection with the Socket Mode server"""
    self.client.connect()

Establishes a new connection with the Socket Mode server

def disconnect(self)
Expand source code
def disconnect(self):
    """Disconnects the current WebSocket connection with the Socket Mode server"""
    self.client.disconnect()

Disconnects the current WebSocket connection with the Socket Mode server

def handle(self,
client: slack_sdk.socket_mode.client.BaseSocketModeClient,
req: slack_sdk.socket_mode.request.SocketModeRequest) ‑> None
Expand source code
def handle(self, client: BaseSocketModeClient, req: SocketModeRequest) -> None:
    """Handles Socket Mode envelope requests through a WebSocket connection.

    Args:
        client: this Socket Mode client instance
        req: the request data
    """
    raise NotImplementedError()

Handles Socket Mode envelope requests through a WebSocket connection.

Args

client
this Socket Mode client instance
req
the request data
def start(self)
Expand source code
def start(self):
    """Establishes a new connection and then blocks the current thread
    to prevent the termination of this process.
    If you don't want to block the current thread, use `#connect()` method instead.
    """
    self.connect()
    if self.app.logger.level > logging.INFO:
        print(get_boot_message())
    else:
        self.app.logger.info(get_boot_message())

    if sys.platform == "win32":
        # Ctrl+C etc does not work on Windows OS
        # see https://bugs.python.org/issue35935 for details
        signal.signal(signal.SIGINT, signal.SIG_DFL)

    Event().wait()

Establishes a new connection and then blocks the current thread to prevent the termination of this process. If you don't want to block the current thread, use #connect() method instead.