CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-slackeventsapi

Python Slack Events API adapter for Flask that provides event-driven Slack app development

Pending
Overview
Eval results
Files

event-adapter.mddocs/

Event Adapter

Core functionality for creating and managing Slack event adapters. The SlackEventAdapter class provides the main interface for receiving Slack events and integrating with Flask web servers.

Capabilities

SlackEventAdapter Creation

Creates a new Slack event adapter instance with signature verification and optional server binding.

class SlackEventAdapter(BaseEventEmitter):
    def __init__(self, signing_secret, endpoint="/slack/events", server=None, **kwargs):
        """
        Initialize the Slack event adapter.
        
        Parameters:
        - signing_secret: str, required - Slack app's signing secret for request verification
        - endpoint: str, optional - URL endpoint for receiving events (default: "/slack/events")
        - server: Flask/Blueprint/LocalProxy, optional - Existing server instance to bind to
        - **kwargs: Additional arguments passed to the SlackServer constructor (unused when server is provided)
        
        Raises:
        - ValueError: If signing_secret is None
        - TypeError: If server is not a Flask, Blueprint, or LocalProxy instance
        """

Built-in Server Management

Starts and manages the built-in Flask server for standalone usage.

def start(self, host='127.0.0.1', port=None, debug=False, **kwargs):
    """
    Start the built-in webserver.
    
    Parameters:
    - host: str, optional - Host to bind the webserver to (default: '127.0.0.1')
    - port: int, optional - Port number for the webserver (default: None, which uses Flask's default of 5000)
    - debug: bool, optional - Enable debug level logging (default: False)
    - **kwargs: Additional arguments passed to Flask.run()
    
    Returns:
    None
    """

Public Attributes

The SlackEventAdapter provides access to key configuration and state through public attributes.

signing_secret: str
    """The signing secret used for HMAC signature verification of incoming requests."""

server: SlackServer
    """The internal SlackServer instance handling HTTP requests and routing."""

Usage Examples

Standalone Server

import os
from slackeventsapi import SlackEventAdapter

# Create adapter with standalone server
slack_events_adapter = SlackEventAdapter(
    signing_secret=os.environ["SLACK_SIGNING_SECRET"],
    endpoint="/slack/events"
)

# Register event listeners
@slack_events_adapter.on("message")
def handle_message(event_data):
    print(f"Message received: {event_data}")

# Start the server
slack_events_adapter.start(host="0.0.0.0", port=3000, debug=True)

Integration with Existing Flask App

import os
from flask import Flask
from slackeventsapi import SlackEventAdapter

# Your existing Flask app
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

# Bind adapter to existing app
slack_events_adapter = SlackEventAdapter(
    signing_secret=os.environ["SLACK_SIGNING_SECRET"],
    endpoint="/slack/events",
    server=app
)

@slack_events_adapter.on("reaction_added")
def reaction_added(event_data):
    print(f"Reaction: {event_data['event']['reaction']}")

if __name__ == "__main__":
    app.run(port=3000)

Custom Endpoint

import os
from slackeventsapi import SlackEventAdapter

# Use custom endpoint path
slack_events_adapter = SlackEventAdapter(
    signing_secret=os.environ["SLACK_SIGNING_SECRET"],
    endpoint="/api/slack/webhook"
)

@slack_events_adapter.on("app_mention")
def handle_mention(event_data):
    event = event_data["event"]
    print(f"Mentioned in channel: {event['channel']}")

slack_events_adapter.start(port=8080)

Accessing Adapter Attributes

import os
from slackeventsapi import SlackEventAdapter

# Create adapter
slack_events_adapter = SlackEventAdapter(
    signing_secret=os.environ["SLACK_SIGNING_SECRET"],
    endpoint="/api/slack/events"
)

# Access public attributes
print(f"Signing secret: {slack_events_adapter.signing_secret}")
print(f"Server endpoint: {slack_events_adapter.server.endpoint}")
print(f"Package info: {slack_events_adapter.server.package_info}")

Install with Tessl CLI

npx tessl i tessl/pypi-slackeventsapi

docs

event-adapter.md

event-handling.md

index.md

server-integration.md

tile.json