Automatically detect and broadcast Discord Quests to your Discord servers with this powerful Node.js bot.
QuestHunter is a Discord bot that automatically detects new Discord quests and broadcasts them to your servers. It uses dual-source detection — pulling from both api.discordquest.com (primary) and the GitHub JSON feed (fallback) for maximum reliability.
Invite the bot through this link if you don't want to host your own bot.
Note
This Bot was made for QuestPhantom Users to help them keep track of new quests for spoofing those: https://github.com/SimpliAj/QuestPhantom
| Feature | Description |
|---|---|
| 🔍 Dual-Source Detection | Pulls from api.discordquest.com + GitHub feed — merged, deduped, maximum coverage |
| 📢 Multi-Server Broadcasting | Send quest notifications to multiple Discord servers simultaneously |
| 🎯 Smart Filtering | Filter quests by reward type (Orbs only, No Orbs, Decorations, All) |
| 🎨 Notification Styles | Choose between a clean text message or a rich embed card per server |
| 🖼️ Reward Thumbnails | Shows reward image: animated GIF for decorations, PNG for game items, Orbs icon for orb rewards |
| 🎞️ MP4 → GIF Conversion | Avatar decoration previews (MP4) are auto-converted to animated GIFs via ffmpeg |
| 💾 Persistent Storage | Remembers known quests — no duplicate notifications |
| 🔔 Role Mentions | Automatically ping specific roles when new quests arrive |
| ⏱️ Configurable Interval | Set custom scan intervals (default: 15 minutes) |
| 🛠️ Easy Setup | Simple slash commands for server configuration |
| 🌐 VPS Ready | Deploy on Linux servers with PM2 (ffmpeg required for GIF conversion) |
- Node.js v18+
- Discord Bot Token
- A Discord server where you can test the bot
-
Clone the repository
git clone https://github.com/yourusername/questfinder.git cd questfinder -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env and fill in your values -
Run locally
npm run all
-
Deploy to VPS (using PM2)
npm install -g pm2 pm2 start startup.js --name questhunter pm2 save pm2 startup
DISCORD_TOKEN=your_bot_token_here
DISCORD_APP_ID=your_app_id_here
WEBHOOK_URL=http://localhost:3001/webhook/quests
WEBHOOK_PORT=3001
SCRAPER_INTERVAL=1800000 # 30 minutes in milliseconds
NOTIFICATION_CHANNEL_ID= # Default channel ID for notifications
ERROR_WEBHOOK= # Optional: webhook URL for error alerts
ADMIN_USER_ID= # Your Discord user ID (for /adminpanel)
GIF_SERVE_URL=https://yourdomain.com/quest-gifs # Public URL where GIFs are served
GIF_SERVE_DIR=/path/to/public/gifs # Local directory for converted GIFs (ffmpeg required)GIF Conversion: Install ffmpeg (
apt install ffmpeg) and setGIF_SERVE_DIR+GIF_SERVE_URLto enable animated avatar decoration thumbnails. Without these, a static fallback image is used.
| Command | Description | Permission |
|---|---|---|
/setup-channel |
Add a channel to receive quest notifications | Manage Server |
/questpingrole |
Set a role to ping when new quests arrive | Manage Server |
/notification-style |
Choose notification style: Default or Embed | Manage Server |
/remove |
Remove a configured channel or ping role | Manage Server |
/setup-expired-channel |
Set a channel for expired quest notifications | Manage Server |
/serverconfig |
View current server configuration | — |
/activequests |
List all currently active quests | — |
/expiredquests |
View all expired quests | — |
/latestquest |
Show the most recently detected quest | — |
/dm-notifications |
Toggle DM notifications for new quests | — |
/spoofguide |
Get the QuestPhantom spoofing guide | — |
/stats |
View bot statistics | — |
/help |
Show all available commands | — |
/feedback |
Submit a bug report or feature request | — |
/quest-test |
Send test quest notifications in current channel | Bot Admin only |
Set how quest alerts look in your server:
- Default — Simple text message with quest link
- Embed — Rich card showing reward image, task type, and expiry date
Only members with Manage Server permission can use this command.
| Task Key | Label |
|---|---|
WATCH_VIDEO |
Video |
WATCH_VIDEO_ON_DESKTOP |
Video (Desktop) |
WATCH_VIDEO_ON_MOBILE |
Video (Mobile) |
PLAY_ON_DESKTOP |
Desktop |
STREAM_ON_DESKTOP |
Desktop (Stream) |
PLAY_ON_MOBILE |
Mobile |
PLAY_ON_PLAYSTATION |
PlayStation |
PLAY_ON_XBOX |
Xbox |
PLAY_ON_SWITCH |
Switch |
COMPLETE_ACHIEVEMENT |
Achievement |
PLAY_ACTIVITY |
Activity |
npm run all
# Runs both scraper and bot concurrently-
Upload files to VPS
scp -r . root@your-vps:/home/discord/questfinder/ -
Install dependencies
cd /home/discord/questfinder npm install -
Start with PM2
npm install -g pm2 pm2 start startup.js --name questhunter pm2 save pm2 startup
-
Monitor
pm2 status pm2 logs questhunter
| Issue | Solution |
|---|---|
| Bot not online | Check DISCORD_TOKEN in .env is correct |
| No quests detected | Check internet access and JSON feed URL |
| Messages not sending | Check channel permissions and bot roles |
| Port 3001 in use | Kill process: lsof -ti:3001 | xargs kill -9 |
Warning
Use at your own risk!
This bot uses a public third-party JSON feed for quest data. Quest availability and data accuracy depend on the feed being up to date.
This project is provided as-is for personal use.
Found a bug? Have an improvement? Feel free to submit an issue or pull request!
