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
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
832dd3a714415fee6de09f82ae174bf10858af7592c336c27ac0946bf8ebdf1d
|
|
| MD5 |
3304bd12ac2c0a18b4cee9ef6e112a5c
|
|
| BLAKE2b-256 |
d88a7f40c09e26d5153dbed06a61ef63c33bcbeace68c5f87256ec6336ee6eea
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
923b1d00d983d743d8fccae11522acc422588e23e9cb2ab684420f398aa3deca
|
|
| MD5 |
80ed8e20905968e485954e1754606db8
|
|
| BLAKE2b-256 |
369f737042ed5e732498cb574012b2d1be489092ad0cd3e7dcae91cb07ab7d5c
|