Skip to main content

No project description provided

Project description

slacktools-commands

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

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

Install

pip install slacktools-commands

Basic Usage

Define your command:

from commands import register_command, Command, CommandValidationError

from myproject import get_status, post_status


@register_command("/status")
class StatusCommand(Command):
    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 commands import CommandFactory

class CommandsView(APIView):
    def post(self, request):
        command = CommandFactory.make_commmand(request.data)
        command.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 commands import ActionCommand, Action, CommandValidationError, register_command

from myproject import post_status_msg


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

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


@register_command("/status")
class StatusCommand(ActionCommand):
    ACTIONS = {
        "service": ServiceStatus
    }

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-commands-1.0.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

slacktools_commands-1.0.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file slacktools-commands-1.0.0.tar.gz.

File metadata

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

File hashes

Hashes for slacktools-commands-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c6248e9363eb4c555cdcb7e46c0e42dee3bba646e67f084e51082b1463efe589
MD5 20c7f625c161c72b61a7a6dd19e846f2
BLAKE2b-256 3101c0b70cb46d1d63be1e8b1fb4fc8994d8921f1cc45b32cff9bab6d76a4e1c

See more details on using hashes here.

File details

Details for the file slacktools_commands-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: slacktools_commands-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.0 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/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for slacktools_commands-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e204d0cb373f84e2676264f044a7927348bd6c8f80e527ac132962349262501
MD5 a4b961cc4a1e136172679ec0d124a920
BLAKE2b-256 c574c8562059294f9191dc243946b51008ba2610b9df137b5355434b6d2dbdb7

See more details on using hashes here.

Supported by

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