74 lines
2.3 KiB
Markdown
74 lines
2.3 KiB
Markdown
# 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/<filename>`).
|
|
- 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.
|
|
|