Discord bot for the Fleetyards community server.
Single-tenant. This bot is built for the Fleetyards Discord only. The Discord application has bot_public: false, so it cannot be added to other servers, and the config hardcodes Fleetyards-specific guild/channel/message/role IDs anyway.
Anything we want to make available to other Star Citizen servers (slash-command ship lookups, hangar lookups, release announcements via webhook, etc.) belongs in a separate, public, multi-tenant bot — not yet started. yards-bot's scope is verification, role management, and other Fleetyards-only mod/admin work.
v0.1 — scaffold only. See docs/exec-plans/v1.md for the v1 design and feature scope.
- Node 22 LTS, TypeScript (strict)
- discord.js v14
- pnpm, Biome, vitest, pino, zod
pnpm install
cp .env.example .env # fill in DISCORD_TOKEN
cp config/verifications.example.yaml config/verifications.yaml
pnpm dev| Command | What it does |
|---|---|
pnpm dev |
Watch mode with tsx |
pnpm build |
Compile to dist/ |
pnpm start |
Run compiled output |
pnpm lint |
Biome check |
pnpm typecheck |
tsc --noEmit |
pnpm test |
vitest |
The bot needs View Channel, Read Message History, and Manage Roles on the target guild. Its top role must sit above any role it grants — Discord silently rejects role changes otherwise.
No privileged intents are required. v1 uses Guilds + GuildMessageReactions and fetches members on demand via REST, so the Server Members Intent does not need to be enabled.
Single instance. Do not scale this service horizontally — duplicate gateway connections will produce duplicate role grants. Deploy details land alongside the v1 implementation.
GPL-3.0-or-later — see LICENSE.