Discord
This is a shipped config-backed outbound surface. Direct sends are implemented today; native Discord gateway reply-loop ownership is not implemented yet.At A Glance
| Field | Value |
|---|---|
| Catalog id | discord |
| Config key | discord |
| Implementation status | config_backed |
| Transport | discord_http_api |
| Aliases | discord-bot |
| Default send target kind | conversation |
| Runtime owner today | outbound-only; no native grouped channels serve discord loop |
Minimal Config
Smoke Test
channels send discordreturns success for a valid channel id targetloong channelslists Discord under the config-backed sectionloong doctorsurfaces any token or endpoint problems without pretending a serve runtime exists- multi-account configs show which configured account is ready and which one still needs review
- if
application_idorallowed_guild_idsare configured, inspection surfaces keep them visible as reserved future-runtime fields instead of silently discarding them
Command Surface
| Operation | Command | Usage or status |
|---|---|---|
| direct send | channels send discord | Usage: loong channels send discord [OPTIONS] —target <TARGET> —text <TEXT> |
| gateway reply loop | channels serve discord | discord serve runtime is not implemented yet |
Required Fields For Send
| Requirement | Config paths | Env pointer paths | Default env |
|---|---|---|---|
| channel enabled | discord.enableddiscord.accounts.<account>.enabled | none | none |
| bot token | discord.bot_tokendiscord.accounts.<account>.bot_token | discord.bot_token_envdiscord.accounts.<account>.bot_token_env | DISCORD_BOT_TOKEN |
Planned Fields Reserved For Future Serve Work
These fields already exist in the channel contract because they belong to the eventual richer Discord runtime story, but they are not enough to claim a shipped serve loop today.| Field family | Current role |
|---|---|
application_id | reserved for future richer Discord runtime / app identity work |
allowed_guild_ids | reserved for future native inbound or gateway-owned Discord work |
Target Rules
channels send discordexpects a Discord channel/conversation id as the target.- Keep targets explicit and numeric.
- If the target is empty, Loong fails fast instead of attempting an accidental send.
Operator Notes
- Discord is currently the Discord HTTP API outbound lane, not a gateway-owned bot runtime.
- If
api_base_urlis overridden, it must still resolve tohttporhttps; non-HTTP schemes are rejected. - Multi-account configs should use
default_accountplusaccounts.<id>before you build higher-level routing on top. loong doctorand onboarding preflight summarize per-account direct-send readiness for configured Discord accounts.application_idandallowed_guild_idsare preserved in status as future-runtime governance fields, not as proof of a shippedchannels serve discordloop.- Treat
loong channelsas the inventory surface andloong doctoras the recovery surface.
Gateway And Ownership
This surface is a direct-send delivery lane. It does not joingateway run or the gateway-owned reply-loop contract today.
Related Docs
- Continue to Channel Guides for the full actionable matrix.
- Continue to Channels for the conceptual surface model.
- Continue to Channel Setup for the shared public setup contract.