Slackbot with a celery queue for long running tasks
Project description
Slackbot Queue
Slackbot with a celery queue for long running tasks
This can be run even without a celery queue as long as you do not try and add things to the worker. Just run the listener and all the features (besides having a worker queue) will still work.
Install
pip install slackbot-queue
Usage
The example
folder has a lot more to show and is ready to run
from slackbot_queue import slack_controller, queue
from example import Example # Import the example command class
# Set up the celery configs
queue.conf.task_default_queue = 'custom_slackbot'
queue.conf.broker_url = 'amqp://guest:guest@localhost:5672//'
# The token could also be set by the env variable SLACK_BOT_TOKEN
slack_controller.setup(slack_bot_token='xxxxxxxx')
# Set up the command by passing in the slack_controller to it
ex = Example(slack_controller)
# Set up the example command to only work in the `general` channel or as a direct message
slack_controller.add_commands({'__direct_message__': [ex],
'__all__': [],
'general': [ex],
})
# Either start the listener
slack_controller.start_listener()
# Or the worker:
# The argv list is celery arguments used to start the worker
slack_controller.start_worker(argv=['celery', 'worker', '--concurrency', '1', '-l', 'info'])
A full example can be found in the example
dir.
Slacks api docs: https://api.slack.com/methods
If the command function returns None
, that means that the bot will continue to check the rest of the commands.
But if the command does return something, no other commands will be checked. Meaning that if there are 2 commands that are looking for the same message regex, the command listed first in the channel list will be the only one triggered.
If you want multiple commands to get triggered by the same message, you can have them return None
, but sill post to slack inside you function by doing self.slack.slack_client.api_call(**message_data)
.
message_data
is the same as you would normally return but with the added keys (which are normally added when the data gets returned):
'method': 'chat.postMessage', # or any other method slack supports
'channel': full_event['channel']['id'],
'as_user': True,
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
File details
Details for the file slackbot-queue-0.3.7.tar.gz
.
File metadata
- Download URL: slackbot-queue-0.3.7.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38efaa1a6fa63f89173b68503b605bd51e7c98a2fe0cb764a9dc435e855fce18 |
|
MD5 | a76dd1c073f9618d44a62230dd215d34 |
|
BLAKE2b-256 | 83267230a949b68e5197df3fa04ff522036125ec184e5a70ca235ed8234dc991 |
File details
Details for the file slackbot_queue-0.3.7-py3-none-any.whl
.
File metadata
- Download URL: slackbot_queue-0.3.7-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc6e722769d8ee6dd955fe2ecda846dbc7278106156422a02c581423944d6218 |
|
MD5 | 5a443583541be5b15efa86f7b8cc3a3c |
|
BLAKE2b-256 | 2142706e66998f61c7ffbd88e043f163125857134481c220b95365c640e2f43b |