Power a Slack bot with Django Channels v2
Project description
slack-channeler
Power a Slack bot with Django Channels v2
Installation
pip install slack-channeler
Usage
slack-channeler relies on the channel layer. First, ensure it's setup. channels-redis is recommended.
# settings.py
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('localhost', 6379)],
},
},
}
Create a consumer to handle Slack events
# consumers.py
from channels.consumer import AsyncConsumer, get_handler_name
class SlackConsumer(AsyncConsumer):
async def dispatch(self, message):
handler = getattr(self, get_handler_name(message), None)
if handler:
await handler(**message['data'])
async def slack_message(self, channel, text, **kwargs):
# Simply echo back message
await self.channel_layer.send('slack', {
'type': 'message',
'channel': channel,
'text': text,
})
Route Slack events to the consumer
# routing.py
from channels.routing import ProtocolTypeRouter, ChannelNameRouter
from .consumers import SlackConsumer
application = ProtocolTypeRouter({
'channel': ChannelNameRouter({
'slack': SlackConsumer,
}),
})
Start a Channels worker to handle Slack events from the channel layer
python manage.py runworker slack
Lastly, run slack-channeler
SLACK_CHANNELER_TOKEN=xoxb-12345678900-098765432100-DeadBeefFeed90iIJjYsf3ay slack_channeler
Building package
Currently, poetry does not support dynamic generation of version files, nor custom hooks to do so. To keep pyproject.toml
the source of authority for version numbers, a custom build.py
script is used to dynamically generate version.py
.
To build slack-channeler, run python build.py
. This has the same semantics as poetry build
.
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
Hashes for slack-channeler-0.0.1.dev0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | dede07b867daa72ed555a802a4bcb83b05678702067749e733606e08272b2c85 |
|
MD5 | cd85268e804b6c9b2c00254f3f28f040 |
|
BLAKE2b-256 | 8779bdfd620b9eef340899975676cef82f76b47ed20998233654603a6ad22753 |
Hashes for slack_channeler-0.0.1.dev0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b28f859e591ada5db8b81903e3752c6d521f3fecb659401df47cbc68bf99bd8 |
|
MD5 | 1952505538bc5d0f80140f2b3a0a7339 |
|
BLAKE2b-256 | bc823fa40f341d05f6d2effc1a05d358e46ee9e746637f23c25893aff16aef79 |