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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

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