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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size slacktools_commands-1.0.0-py3-none-any.whl (9.0 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size slacktools-commands-1.0.0.tar.gz (6.0 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for slacktools_commands-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e204d0cb373f84e2676264f044a7927348bd6c8f80e527ac132962349262501 |
|
MD5 | a4b961cc4a1e136172679ec0d124a920 |
|
BLAKE2-256 | c574c8562059294f9191dc243946b51008ba2610b9df137b5355434b6d2dbdb7 |
Hashes for slacktools-commands-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6248e9363eb4c555cdcb7e46c0e42dee3bba646e67f084e51082b1463efe589 |
|
MD5 | 20c7f625c161c72b61a7a6dd19e846f2 |
|
BLAKE2-256 | 3101c0b70cb46d1d63be1e8b1fb4fc8994d8921f1cc45b32cff9bab6d76a4e1c |