Discord
Connect a Discord bot to server channels and threads. Direct messages and group DMs are ignored because they do not provide a guild member context. System messages, bot messages, and messages from a server excluded by the plugin settings are also ignored. For shared identity and access, see Channels.
Connect the bot
- Create an application in the Discord Developer Portal.
- Create a bot and copy its token. Enable Message Content Intent under Privileged Gateway Intents.
- Invite the bot to your server with permission to read and send messages and use application commands. Grant any additional Discord permissions needed for actions you want it to perform.
- In Elowen, open Settings → Plugins → Available and install Discord, then enter the bot token in Settings → Access → Discord.
- Add a role policy and enable the plugin.
Enable Server Members Intent too if you need the DiscordListMembers tool.
Choose who the bot answers
In Settings → Plugins → Discord → Role policies, add Discord role IDs that may use the bot. Policies are checked in order and the first match applies; unmatched members are ignored. Use * to admit all server members and place it after named roles. A policy can also include a room-specific prompt.
Turn on Administrator access for a policy to allow shared-channel controls such as /model, /reasoning, /context, and /display, as well as operator commands such as /restart. A role policy does not replace linking the sender's Discord identity to an Elowen account. Project and tool access come from the linked account, and Discord actions also require the bot's Discord permissions.
Limit replies and send notifications
In Settings → Plugins → Discord:
- Respond without mention is on by default. Turn it off to require an @mention.
- Guild ID restricts replies to one server. Leave it empty to allow all servers where the bot is installed.
- Allowed threads restricts replies to the listed thread IDs. When the list is empty, the bot can answer in any otherwise permitted channel or thread.
- Notification destination chooses a channel or active thread for proactive messages such as scheduled results and alerts. Leave it empty to disable these messages.
The destination picker needs both the bot token and a server ID. It lists text channels and active threads, not categories, voice, news, stage, forum or media channels, or archived threads.
Commands and presentation
Discord displays available commands as slash commands, select menus, and buttons. The running setup determines the menu. Common commands include /new, /stop, /stats, /compact, /fast, and /help. The shared /model, /reasoning, /context, and /display controls require an admin policy, as do the room commands /stop, /stats, and /compact. /restart restarts Elowen for everyone and requires an admin policy.
Questions from Elowen appear as buttons or menus, and a prompt with several questions moves through them one at a time. Any member the role policies admit can answer. A member no policy admits gets a private notice.
Set defaults in the plugin settings, or use /display in a channel where you have permission:
- Tool activity: Off, Live status, or Live output.
- Answer delivery: Final answer only, or Show answer as it is written.
- Tool output detail: Status only, Short summary, or Rolling output tail.
- Tool message layout: One live message, or One message per tool.
- Replace tool activity with the answer: off by default. When on, the progress message is replaced by the final answer. Live answer delivery and per-tool layouts are overridden.
Processing reactions and the Runtime footer (a small model and context percentage line under the final reply) are on by default. Show reasoning is off by default and requires a model that supports extended thinking. Service language controls the bot's own messages and supports English, Čeština, and Slovenčina.
Conversation history, images, and files
Channel history messages defaults to 0. Set it from 0 to 100 to include that many recent Discord messages when a new channel conversation starts. Existing conversations do not fetch the history again. If Discord cannot fetch the history, the conversation starts without it.
A vision-capable model is needed to understand images. The optional Vision model selects one for image messages; if empty, the channel's usual model is used. By default, Max inbound image size is 5 MiB per incoming image and Max images per message is four images per message. Other files are limited by Max file size (25 MiB by default) and Max files per message (five by default). Oversized and excess attachments are noted rather than downloaded. Max images per reply sets how many images the agent can attach to one reply with ShareImage; the default is four. Audio transcription is handled separately and is limited to 25 MiB per clip.
Voice notes and Discord tools
Voice notes use core Voice mode, configured in Settings → Voice mode. Elowen transcribes an audio attachment for a linked account with the voice grant. Voice mode must be enabled and the account must have room under its spend limit. If transcription is refused or fails, the attachment is marked as untranscribed audio.
A native Discord voice message receives a text answer followed by an OGG voice reply. An ordinary audio attachment receives a text answer only. If speech is refused or fails, the text answer remains.
The plugin provides structured tools for server information, channels, threads, members, roles, pins, and messages. Use DiscordListChannels first when you need a channel or thread ID, and use DiscordReadChannel to find message IDs. DiscordApi is a lower-level way to call Discord's API and can make irreversible changes. Tool policy and bot permissions both apply.