Discord — converse, capture, restitute

The Discord integration binds one or more authorized channels to your OPERA workspace. Strict scope: conversation, capture, restitution, engagement proposals. Never an external action from Discord — the bot's only capability is replying in the channel the message came from.

Install

  1. Create a bot on the Discord developer portal and enable the Message Content intent.
  2. Invite it to your server, note the authorized channel ids.
  3. Export the token (never in a git-tracked file) and declare the channels:
export MEMIA_DISCORD_TOKEN="<bot token>"
memia discord exemple-config > discord-channels.json
# edit: channelId, name, "capture": true for inbox-style channels

memia discord run --root ~/MEMIA --config discord-channels.json   # Node ≥ 22

Inside a channel

memia restitution              # ⏳ due · 📌 no date · ❓ doubtful
memia engagements              # open engagements
memia recherche contract       # OPERA search
memia confirmer eng-… 2026-09-01
memia refuser eng-…

Any other message in a channel with "capture": true is analyzed locally: score > 80 → detecte engagement (card posted); 40-80 → proposal to confirm; < 40 → silence, journal only. Provenance (channel #inbox) stays on every entity.

Verifiable isolation: an undeclared channel = total silence. The bot never posts anywhere but the message's channel. The logic is tested offline (injected transport); the WebSocket transport is validated on your machine in one command — nothing is promised before that.