Home

Awesome

slackblocks <img src="https://github.com/nicklambourne/slackblocks/raw/master/docs_src/img/sb.png" align="right" width="250px"/>

Licence: MIT Licence: BSD-3-Clause Python Versions PyPI Downloads Build Status Docs

What is it?

slackblocks is a Python API for building messages in the fancy Slack Block Kit API

Documentation

Full documentation is provided here.

Requirements

slackblocks requires Python >= 3.8.

As of version 0.1.0 it has no dependencies outside the Python standard library.

Installation

pip install slackblocks

Basic Usage

from slackblocks import Message, SectionBlock


block = SectionBlock("Hello, world!")
message = Message(channel="#general", blocks=block)
message.json()

Will produce the following JSON string:

{
    "channel": "#general",
    "mrkdwn": true,
    "blocks": [
        {
            "type": "section",
            "block_id": "992ceb6b-9ad4-496b-b8e6-1bd8a632e8b3",
            "text": {
                "type": "mrkdwn",
                "text": "Hello, world!"
            }
        }
    ]
}

Which can be sent as payload to the Slack message API HTTP endpoints.

Of more practical use is the ability to unpack the objects directly into the (Legacy) Python Slack Client in order to send messages:

from os import environ
from slack import WebClient
from slackblocks import Message, SectionBlock


client = WebClient(token=environ["SLACK_API_TOKEN"])
block = SectionBlock("Hello, world!")
message = Message(channel="#general", blocks=block)

response = client.chat_postMessage(**message)

Or the modern Python Slack SDK:

from os import environ
from slack_sdk import WebClient
from slackblocks import Message, SectionBlock


client = WebClient(token=environ["SLACK_API_TOKEN"])
block = SectionBlock("Hello, world!")
message = Message(channel="#general", blocks=block)

response = client.chat_postMessage(**message)

Note the ** operator in front of the message object.

Can I use this in my project?

Yes, please do! The code is all open source and dual BSD-3.0 and MIT licensed (use what suits you best).