Documentation

Discord bot

The ctrl alt doc Discord bot provides a small Discord interface to a CAD documentation site.

It is designed as a thin integration layer:

text
Discord → Discord bot → CAD HTTP API → Discord bot → Discord

CAD remains responsible for loading documents, searching them, resolving page slugs, and maintaining the documentation collection. The bot does not copy CAD's search or document logic.

Commands #

text
/docs search <query>
/docs page <slug>
/docs list category:<slug>

Read about each command:

Responses are plain Discord messages. The bot does not use embeds.

Self-hosting #

The bot is intended to be self-hosted. Each operator creates their own Discord application, invites the bot to their own server, and points it at their own CAD site.

Install a release #

Download the latest cad-bot release , then unpack it on the machine that will run the bot:

bash
tar -xzf cad-discord-<version>.tar.gz
cd cad-discord-<version>
npm ci --omit=dev
cp .env.example .env

Edit .env with the Discord application details and the URL of the CAD site. Then register the command and start the bot:

bash
npm run register
npm start

Install from npm #

The public cad-discord npm package is the quickest way to install the bot:

bash
npm install --global cad-discord
mkdir cad-discord-config
cd cad-discord-config
cp "$(npm root --global)/cad-discord/.env.example" .env

Edit .env, then register the commands and start the bot:

bash
cad-discord-register
cad-discord

Both commands use the .env file in the current working directory. GitHub Releases remain available if you prefer a versioned tarball.

For local development, set DISCORD_GUILD_ID to register commands for one server immediately. For a public installation, omit it to register global commands; global command changes can take longer to appear in Discord.

Required configuration:

text
DISCORD_TOKEN=
DISCORD_CLIENT_ID=
DISCORD_GUILD_ID=
CAD_BASE_URL=http://localhost:5173

Keep the Discord token secret. Do not commit the real .env file or include credential values in documentation.

Privacy and data boundaries #

The bot does not read ordinary Discord messages and does not require the privileged Message Content intent. It does not maintain user profiles, search history, analytics, telemetry, or an AI integration.

Search queries are sent to the configured CAD server for the request and are not deliberately persisted by the bot. Hosting providers and the CAD server may retain normal process or HTTP access logs according to their own configuration.