RSSFlux integrates with Discord through slash commands, allowing you to manage feeds and save links directly from your Discord server.
This is a one-time configuration for the Discord Application owner.
1. Go to https://discord.com/developers/applications
2. Click New Application and name it (e.g. "RSSFlux")
3. Go to General Information and note your Application ID (also called Client ID)
4. Go to Bot → Add Bot
5. Copy the Token (looks like MTIzNDU2Nzg5MDEyMzQ1Njc4Ojk...)
6. In the Bot tab, scroll down to "Requires OAuth2 Code Grant"
7. Make sure it is OFF (disabled) — critical: if left ON, the bot cannot be invited to servers
8. In RSSFlux, go to Admin → Settings → Discord
9. Paste the Public Key (from General Information) into discord_public_key
10. Paste the Bot Token (from Bot page) into discord_bot_token
11. In Discord Developer Portal, go to General Information
12. Set Interactions Endpoint URL to:
`
https://rssflux.io/api/incoming/discord
`
13. Click Save — it should verify instantly. If it fails, check that discord_public_key matches exactly
Do NOT use the URL Generator on the OAuth2 tab — it often silently fails to produce a URL. Do not add a Redirect URI (it's not needed for bot invites and will break the invite flow).
Instead, use this direct URL format (replace APP_ID with your Application ID):
`
https://discord.com/api/oauth2/authorize?client_id=APP_ID&permissions=68608&scope=bot+applications.commands
`
Open this URL in a browser. You will be prompted to:
After authorization, the bot appears in your server's member list.
Run this on the server (inside the Docker container):
`bash
docker compose exec -T api python3 -m app.api.register_discord_commands
`
This registers all 7 commands: /flux-help, /feednames, /feedlist, /feedlatest, /addfeed, /linkdrop, and /link.
The script handles Discord's rate limits automatically. If you need to update commands later:
`bash
docker compose exec -T api python3 -m app.api.register_discord_commands
`
---
Every user needs to link their Discord account once:
1. Go to Settings in the RSSFlux dashboard
2. Scroll to Connect Discord
3. Click Generate Code — a 6-digit code appears
4. In any Discord channel where the bot is present, run:
`
/link 123456
`
(replace with your code)
5. The bot will reply: _"✅ Discord linked to your RSSFlux account!"_
The code expires after 5 minutes. Generate a new one if it expires.
---
Shows all available slash commands.
`
/flux-help
→ RSSFlux Discord Commands
/flux-help — Show this help
/feednames — List your feeds
/feedlist — Latest items from all feeds
/feedlatest
/addfeed
/linkdrop
/link — Link your Discord to RSSFlux
`
Lists all your feeds with their numeric IDs.
Shows the latest 3 items from every feed.
Shows the latest items from a specific feed. Default 5 items.
`
/feedlatest 121
/feedlatest 121 10
`
Creates a new RSS feed from a URL.
`
/addfeed https://example.com/rss
/addfeed https://example.com/rss My Feed
`
Saves a URL to your Link Drop list. Default list is LD.
`
/linkdrop https://example.com/article
/linkdrop https://example.com/article MS
`
`Links your Discord account to RSSFlux. Get the code from Settings → Connect Discord.
---
| Issue | Cause | Fix |
|-------|-------|------|
| Commands not showing | Not registered | Run the registration script |
| Bot not in server | OAuth2 Code Grant is ON | Go to Bot tab → disable "Requires OAuth2 Code Grant" |
| Invite URL not generating | Buggy Discord URL generator | Use the direct URL format instead |
| "Integration requires code grant" | OAuth2 Code Grant is ON | Disable it on the Bot tab |
| Redirect URI breaks invite | Not needed for bot invites | Remove it from OAuth2 tab |
| "Your Discord isn't linked" | Account not connected | Generate a code from Settings, run /link in Discord |
| Code expired | 5-minute expiry | Generate a new code from Settings |
| Endpoint URL not verifying | Wrong public key | Check discord_public_key matches General Information |
| 401 Unauthorized on registration | Shell quoting issue | Run the script from inside Docker directly |
| Rate limited on registration | Discord API limits | Wait a minute, the script now retries automatically |
| Need to update commands | Command definitions changed | Re-run registration script with --clear flag |