blockkit

Screenshot

Build status PyPI version Downloads


Blockkit is a Python library for building UI interfaces for Slack apps. It allows you to compose the interface from Python classes, so you type less, and your code becomes more maintainable.

Blockkit performs validation at runtime and provides user-friendly errors when data is invalid.

Generate

You don’t even need to write code yourself. Go to https://blockkit.botsignals.co paste your JSON payload from Block Kit Builder and get corresponding Python code!

Screenshot

Installation

pip install blockkit

Usage

Start with one of the Home, Modal, or Message surface classes and follow the structure as you would follow it in JSON.

The library supports all types of surfaces, blocks, block elements, and composition objects Slack provides.

Once UI is ready, call the build() method to render components to dictionary:

from blockkit import Section, MarkdownText

Section(text=MarkdownText(text="hello world")).build()

{"type": "section", "text": {"text": "hello world", "type": "mrkdwn"}}

Here’s the list of types of components and corresponding classes:

Surfaces

Type Class
home Home
modal Modal
  Message
workflow_step WorkflowStep

Blocks

Type Class
actions Actions
context Context
divider Divider
header Header
image ImageBlock
input Input
rich_text RichText
section Section

Block elements

Type Class
button Button
checkboxes Checkboxes
datepicker DatePicker
datetimepicker DatetimePicker
type Image
multi_static_select MultiStaticSelect
multi_users_select MultiUsersSelect
multi_channels_select MultiChannelsSelect
multi_conversations_select MultiConversationsSelect
multi_external_select MultiExternalSelect
overflow Overflow
plain_text_input PlainTextInput
radio_buttons RadioButtons
static_select StaticSelect
users_select UsersSelect
channels_select ChannelsSelect
conversations_select ConversationsSelect
external_select ExternalSelect
timepicker TimePicker
rich_text_list RichTextList
rich_text_preformatted RichTextPreformatted
rich_text_quote RichTextQuote
rich_text_section RichTextSection
file_input FileInput

Composition objects

Type Class
plain_text PlainText
mrkdwn MarkdownText
text Text
emoji Emoji
  Style
  Confirm
  PlainOption
  MarkdownOption
  OptionGroup
  Filter
  DispatchActionConfig

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT