Module slack_bolt.listener.async_internals

Expand source code
from logging import Logger
from typing import Dict, Any, Optional

from slack_bolt.request.async_request import AsyncBoltRequest
from slack_bolt.request.payload_utils import (
    to_options,
    to_shortcut,
    to_action,
    to_view,
    to_command,
    to_event,
    to_message,
    to_step,
)
from slack_bolt.response import BoltResponse


def _build_all_available_args(
    logger: Logger,
    request: AsyncBoltRequest,
    response: Optional[BoltResponse],
    error: Optional[Exception] = None,
) -> Dict[str, Any]:
    all_available_args = {
        "logger": logger,
        "error": error,
        "client": request.context.client,
        "req": request,
        "request": request,
        "resp": response,
        "response": response,
        "context": request.context,
        # payload
        "body": request.body,
        "options": to_options(request.body),
        "shortcut": to_shortcut(request.body),
        "action": to_action(request.body),
        "view": to_view(request.body),
        "command": to_command(request.body),
        "event": to_event(request.body),
        "message": to_message(request.body),
        "step": to_step(request.body),
        # utilities
        "say": request.context.say,
        "respond": request.context.respond,
    }
    all_available_args["payload"] = (
        all_available_args["options"]
        or all_available_args["shortcut"]
        or all_available_args["action"]
        or all_available_args["view"]
        or all_available_args["command"]
        or all_available_args["event"]
        or all_available_args["message"]
        or all_available_args["step"]
        or request.body
    )
    return all_available_args