Skip to main content

No project description provided

Project description

slacktools-interactivity

A simple framework for working with Slack interactivity (https://api.slack.com/interactivity).

Install

pip install slacktools-interactivity

Commands

Register your CommandHandler class with the ComandFactory and when you receive a command request from Slack simply grab the command instance from the factory and execute it.

Basic Usage

Define your command:

from interactivity import CommandFactory, CommandHandler, CommandValidationError

from myproject import get_status, post_status


@CommandFactory.register("/status")
class StatusCommand(CommandHandler):
    def _validate(self):
        if not get_status(id=self.payload.text):
            raise CommandValidationError("Not a valid id.")

    def _execute(self):
        post_status(id=self.payload.text)

Handle the Slack command request:

from rest_framework.views import APIView
from rest_framework.response import Response

from interactivity import CommandFactory

class CommandsView(APIView):
    def post(self, request):
        handler = CommandFactory.make_handler(request.data)
        handler.execute()
        return Response()

Action Commands

Action commands allow you execute many different actions from a single Slack command. The text following the command is used to determine which action should be performed. The text is split by spaces, the first character set determines the action and the remain character sets are passed to the action as options/parameters.

Example

The below class definitions will handle the following command: /status service api

from interactivity import (
    ActionCommandHandler, 
    CommandAction, 
    CommandValidationError,
    CommandFactory
)

from myproject import post_status_msg


class ServiceStatus(CommandAction):
    def validate(self):
        if len(self.options) == 0:
            CommandValidationError(self.payload, "Missing service name")

    def execute(self):
        post_status_msg(self.options[0])


@CommandFactory.register("/status")
class StatusCommand(ActionCommandHandler):
    ACTIONS = {
        "service": ServiceStatus
    }

Views

To document

Actions

To document

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slacktools-interactivity-1.2.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slacktools_interactivity-1.2.1-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file slacktools-interactivity-1.2.1.tar.gz.

File metadata

  • Download URL: slacktools-interactivity-1.2.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for slacktools-interactivity-1.2.1.tar.gz
Algorithm Hash digest
SHA256 4c794c05f7472cc921651ff15c9b402296d80a4e02694f403bc937bdbdf9e837
MD5 90ee4ef1c3e7539845a7e54e4de8f085
BLAKE2b-256 62452dcfbcdfd0afd8df16ed66560709fc426ce35d11fee85b25eab634ba3365

See more details on using hashes here.

File details

Details for the file slacktools_interactivity-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: slacktools_interactivity-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for slacktools_interactivity-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4c9a7b8705d49328fe90ec0ea926c926232cd0cd7c78a5ca6fadf36abfe96cf
MD5 37752f4a1ceb20bbb5176d36d311a234
BLAKE2b-256 6bb78eddfeb0904758c3b9e567baffccd92072d441cfac632b0db36c24f006f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page