Skip to main content

Utility plugins for Slack-Machine, the sexy, simple, yet powerful and extendable Slack bot

Project description

slack-machine-plugins

Utility plugins for Slack-Machine, the sexy, simple, yet powerful and extendable Slack bot.

pip install slack-machine-plugins

commander

Commander provides two classes Command and CommandArgument for a declarative way to define chat commands and their arguments for input validation and error feedback for the user. Features include:

  • Type and length validation for chat command arguments.
  • Strict choices.
  • Custom validation and error messages.
  • Usage and error texts for user feedback.

Example Usage

Taken from test case, realistic example.

# command definition
####################
from machine_plugins.commander import Command, CommandArgument

scale_cmd = Command(
    name='scale',
    description='Scale a deployment.',
    arguments=[
        CommandArgument(
            name='namespace',
            target_type=str,
            choices=['default', 'dev'],
            description='Namespace of the deployment.',
        ),
        CommandArgument(
            name='deployment',
            validation=(lambda d: d.startswith('deployment-prefix-'),),
            description='Name of the deployment.',
        ),
        CommandArgument(
            name='replicas',
            target_type=int,
            validation=(lambda r: 2 <= int(r) <= 10, 'You can not scale under 2 or above 10 replicas.'),
        ),
    ],
)

# command usage in slack-machine
################################
from machine.plugins.base import MachineBasePlugin
from machine.plugins.decorators import respond_to


class DeploymentPlugin(MachineBasePlugin):

    @respond_to(regex=r'^scale ?(?P<args>.*)$')
    def scale(self, msg, args):
        errs = scale_cmd.errors(args)
        if errs:
            resp = '\n'.join(errs)
            msg.say(f'```{resp}```')
            return
        # input validation complete, do your thing e.g `scale(*args.split())`

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

slack-machine-plugins-0.1.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

slack_machine_plugins-0.1.1-py2.py3-none-any.whl (7.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file slack-machine-plugins-0.1.1.tar.gz.

File metadata

  • Download URL: slack-machine-plugins-0.1.1.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.6

File hashes

Hashes for slack-machine-plugins-0.1.1.tar.gz
Algorithm Hash digest
SHA256 832dd3a714415fee6de09f82ae174bf10858af7592c336c27ac0946bf8ebdf1d
MD5 3304bd12ac2c0a18b4cee9ef6e112a5c
BLAKE2b-256 d88a7f40c09e26d5153dbed06a61ef63c33bcbeace68c5f87256ec6336ee6eea

See more details on using hashes here.

File details

Details for the file slack_machine_plugins-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: slack_machine_plugins-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.6

File hashes

Hashes for slack_machine_plugins-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 923b1d00d983d743d8fccae11522acc422588e23e9cb2ab684420f398aa3deca
MD5 80ed8e20905968e485954e1754606db8
BLAKE2b-256 369f737042ed5e732498cb574012b2d1be489092ad0cd3e7dcae91cb07ab7d5c

See more details on using hashes here.

Supported by

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