Photo by Ben Griffiths

SlackView: Slack Bot opening Modals

Overview Modals are popup dialogs that collect structured input from users. They appear as an overlay on top of Slack’s interface and can contain text inputs, date pickers, checkboxes, radio buttons, and more. Unlike messages that flow passively through a channel, modals are interactive forms that your Bot presents to a user and then processes when submitted. If you are familiar with Slack Bolt, you have probably opened modals using client.views_open(). In Bolt Python you would write: ...

May 16, 2026 · 12 min · Loki Astari, (C)2026
Photo by Oscar Nilsson

SlackActions: Slack Bot handling Slash commands

Overview Slash commands let users trigger your Bot by typing a command like /todo or /deploy directly into the Slack message box. Unlike message handlers that passively listen for text, slash commands are explicit invocations — they feel like calling a function. The user types the command, optionally followed by arguments, and your Bot receives the request and responds. If you are familiar with the Slack Bolt Python library, the interface should feel familiar. In Bolt Python you would write: ...

May 6, 2026 · 7 min · Loki Astari, (C)2026
Photo by Roman Synkevych

SlackHandlers: Slack Bot handling events

Overview In the previous article I walked through creating a Slack Bot and registering it with Slack. That article simply verified that events coming from Slack were correctly received by the Bot. This article will expand on that and show how to respond to these events using the message() and event() methods provided by the NisseBolt library. If you are familiar with the Slack Bolt Python library, the interface should feel familiar. In Bolt Python you would write: ...

May 2, 2026 · 10 min · Loki Astari, (C)2026
Photo by Ken Blode

SlackMug: A Mug plugin for a Slack bot

Overview This article will walk through the steps of creating a Mug plugin that implements a Slack Bot. It utilizes NisseBolt, a C++ library designed to be similar to the Slack Bolt Python libraries. You will create three files: a Makefile to build a shared library, a Bot.cpp that defines your Slack Bot as a Mug plugin, and a config.plugin file that tells the Mug server how to load and configure your Bot. Once built, the Mug server handles all the networking and threading — you just write the bot logic. After that, you will register your bot with Slack so it can start receiving events. ...

April 21, 2026 · 7 min · Loki Astari, (C)2026
Photo by ThisisEngineering RAEng

Mug: A C++ server with hot-reloadable plugins

I like Python’s Bottle/Flask development loop: change code, hit refresh, keep moving. In C++ we traditionally pay for “real builds” with server restarts, cold state, and the mental overhead of wiring a server skeleton for every prototype. Mug is my attempt to keep the runtime production grade, while making the development loop feel lightweight: build a shared library, Mug loads it, and when you rebuild the library Mug hot-reloads it. ...

March 4, 2026 · 6 min · Loki Astari, (C)2026