# ZitateBot Discord bot + web form for submitting quotes to different channels based on selected speaker. ## Features - Dark-mode animated webpage - Discord login required for quote submissions - Speaker dropdown loaded from config - Quote submission endpoint - Discord embed posting to channel configured per speaker - Optional mirror posting to a global latest channel - Creator attribution is always included on quotes - `/create-quote` command for Discord-side quote creation - Optional file upload from web form with a public URL added to the quote ## Setup 1. Install dependencies. 2. In the Discord Developer Portal, set OAuth2 redirect URL to `http://localhost:3000/auth/discord/callback` (or your hosted URL). 3. Copy `.env.example` to `.env` and set bot + OAuth credentials. 4. Edit `config/quotes.config.json` with real channel IDs and allowed Discord user IDs. 5. Run config check and then start. Set `DISCORD_GUILD_ID` in `.env` if you want `/create-quote` to appear quickly in one guild during setup. ```powershell npm install Copy-Item .env.example .env npm run check npm start ``` Then open `http://localhost:3000`. ## Config format `config/quotes.config.json` ```json { "allowedSubmitterDiscordIds": ["111111111111111111"], "latestChannelId": "222222222222222222", "createQuoteChannelId": "333333333333333333", "users": [ { "id": "alice", "displayName": "Alice", "channelId": "123456789012345678", "accentColor": 5793266, "avatarUrl": "https://...optional" } ] } ``` ## Notes - Bot requires access to the configured channels. - Only users in `allowedSubmitterDiscordIds` can submit quotes (web and `/create-quote`). - If `latestChannelId` is set, every quote is also posted there. - If `createQuoteChannelId` is set, `/create-quote` can only be used in that channel. - Without `createQuoteChannelId`, `/create-quote` is allowed in channels named `create-quote`. - Web form uploads are optional and stored in `uploads/` (served from `/uploads/`). - Allowed web upload file types: images, video/audio files, `.txt`, `.pdf`, `.zip`, `.7z`, `.rar` (max 100 MB). ## Discord command quote creation - Use `/create-quote` in your create-quote channel. - Select `speaker` from the dropdown choices. - Enter `quote` text in the command form. - The quote is posted like web submissions and includes who created it.