# Discord RSS Bot A Discord bot that reads messages from a channel, stores them in SQLite, and serves them as an RSS feed. ## Setup ### 1. Create a Discord Bot 1. Go to [Discord Developer Portal](https://discord.com/developers/applications) 2. Click "New Application" and give it a name 3. Go to the "Bot" section and click "Add Bot" 4. Copy the bot token 5. Under "Privileged Gateway Intents", enable: - Server Members Intent - Message Content Intent 6. Go to "OAuth2" > "URL Generator" 7. Select scopes: `bot` 8. Select bot permissions: `Read Messages/View Channels`, `Send Messages` 9. Use the generated URL to invite the bot to your server ### 2. Configure Environment ```bash cp .env.example .env ``` Edit `.env` and add: - `DISCORD_TOKEN` - Your bot token - `DISCORD_CHANNEL_ID` - The channel ID to monitor (enable Developer Mode in Discord to copy channel IDs) ### 3. Install Dependencies ```bash npm install ``` ### 4. Run ```bash npm start ``` ## Usage ### RSS Feed Access the RSS feed at: ``` http://localhost:3000/rss/{channel_id} ``` Or with a custom limit: ``` http://localhost:3000/rss/{channel_id}?limit=20 ``` ### List Available Channels ``` GET http://localhost:3000/rss/ ``` ### Manually Trigger Fetch ``` POST http://localhost:3000/fetch/{channel_id} ``` ## API Endpoints | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/rss` | List all channels with messages | | GET | `/rss/:channelId` | Get RSS feed for a channel | | GET | `/rss/:channelId?limit=N` | Get RSS feed with N messages | | POST | `/fetch/:channelId` | Trigger message fetch | | GET | `/health` | Health check | ## Configuration | Variable | Default | Description | |----------|---------|-------------| | `DISCORD_TOKEN` | - | Discord bot token | | `DISCORD_CHANNEL_ID` | - | Channel to monitor | | `PORT` | 3000 | Server port | | `BASE_URL` | http://localhost:3000 | Base URL for RSS links | | `FETCH_INTERVAL_MS` | 300000 | Auto-fetch interval (5 min) | ## Database Messages are stored in `data/messages.db` (SQLite). The database is created automatically on first run.