Skip to content

Feat/slack support#4

Merged
emanuilo merged 7 commits intomainfrom
feat/slack-support
Apr 13, 2026
Merged

Feat/slack support#4
emanuilo merged 7 commits intomainfrom
feat/slack-support

Conversation

@emanuilo
Copy link
Copy Markdown
Owner

No description provided.

emanuilo and others added 2 commits April 13, 2026 10:29
Implement Slack as a second messaging platform alongside Telegram.
Uses slack-bolt with Socket Mode (WebSocket, no public URL needed).
Handles text, image, and audio messages. Adds generalized
platform_images table for cross-platform image retrieval, setup wizard
and CLI command (`memclaw slack`), and updated documentation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Without this toggle, DMs to the bot show "Sending messages to this app has been turned off" with no clear path to fix.
@emanuilo emanuilo self-assigned this Apr 13, 2026
Lets users create the Slack app via "From a manifest" instead of
clicking through scopes, events, and the App Home toggles by hand.
Messaging clients render different (or no) markdown dialects, so the
agent's full markdown output (`**bold**`, `# headings`, fenced code) was
leaking as literal characters in Slack and WhatsApp. Pin the agent to a
minimal common syntax — single-asterisk bold, underscore italic, plain
dashes for bullets, no headings or backticks — that renders cleanly
across Slack mrkdwn, WhatsApp, and Telegram.

Also flip the Telegram handler to parse_mode="Markdown" so `*bold*` and
`_italic_` actually render, with a plain-text fallback if the agent
emits something the legacy parser rejects.
… setup

`memclaw slack` was prompting SLACK_BOT_TOKEN and SLACK_APP_TOKEN as
"(optional)" even though the CLI immediately errored out after setup if
they were missing — so the wizard happily accepted blank input that the
bot couldn't run with. Same lie applied to TELEGRAM_BOT_TOKEN.

Mark those tokens required=True and extend the wizard so a channel-scoped
required key enforces only when invoked via that channel; `memclaw
configure` still lets users edit anything without forcing slack/telegram
keys on telegram-only/slack-only users.

Also drop the duplicate ", optional" suffix from the SLACK_ALLOWED_CHANNELS
label that was rendering as "... optional) (optional):".
Handlers already pre-fetch and summarise URLs into a `[Link summary]`
block, but the agent's capability list never mentioned it — so it
wouldn't surface the feature when users asked what it can do.
Telegram handler now passes parse_mode="Markdown" so the agent's
single-asterisk bold actually renders. The handler test was still
asserting the old plain-text call signature.
@emanuilo emanuilo merged commit ea4d20b into main Apr 13, 2026
4 checks passed
@emanuilo emanuilo deleted the feat/slack-support branch April 13, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant