Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slack-channeler-0.0.1.dev0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

slack_channeler-0.0.1.dev0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file slack-channeler-0.0.1.dev0.tar.gz.

File metadata

  • Download URL: slack-channeler-0.0.1.dev0.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.32.2 CPython/3.7.1

File hashes

Hashes for slack-channeler-0.0.1.dev0.tar.gz
Algorithm Hash digest
SHA256 dede07b867daa72ed555a802a4bcb83b05678702067749e733606e08272b2c85
MD5 cd85268e804b6c9b2c00254f3f28f040
BLAKE2b-256 8779bdfd620b9eef340899975676cef82f76b47ed20998233654603a6ad22753

See more details on using hashes here.

File details

Details for the file slack_channeler-0.0.1.dev0-py3-none-any.whl.

File metadata

  • Download URL: slack_channeler-0.0.1.dev0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.32.2 CPython/3.7.1

File hashes

Hashes for slack_channeler-0.0.1.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b28f859e591ada5db8b81903e3752c6d521f3fecb659401df47cbc68bf99bd8
MD5 1952505538bc5d0f80140f2b3a0a7339
BLAKE2b-256 bc823fa40f341d05f6d2effc1a05d358e46ee9e746637f23c25893aff16aef79

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