🛠️ Troubleshooting
Startup errors
"Missing required environment variables"
[TicketBot] ❌ Configuration Error
Missing required environment variables:
✗ FLUXER_BOT_TOKEN
✗ GUILD_ID
Fix: Make sure .env exists in the project root. Copy .env.example → .env and fill in your values.
"config.json not found"
config.json not found.
1. Copy config.example.json → config.json
...
Fix:
cp config.example.json config.json
Then replace placeholder IDs.
"config.json has a JSON syntax error"
config.json has a JSON syntax error:
Unexpected token '}' at position 423
Fix: Paste your config.json into jsonlint.com to find the exact line with the problem. Common causes: trailing commas, missing quotes, or mismatched brackets.
"categoryId is missing or still a placeholder"
✗ ticketTypes[0] (id="general"): "categoryId" is missing or still a placeholder
Fix: Replace "YOUR_CATEGORY_ID_HERE" with the actual category snowflake ID. Enable Developer Mode in Fluxer → right-click the category → Copy ID.
"supportRoles must have at least one valid role ID"
✗ ticketTypes[0] (id="general"): "supportRoles" must have at least one valid role ID
Fix: Replace "YOUR_ROLE_ID_HERE" in supportRoles with the actual role snowflake ID. Right-click the role in Server Settings → Copy ID.
Runtime issues
Panel reactions aren't appearing
The bot might lack the Add Reactions permission in the panel channel.
Fix: Check the panel channel's permission overrides and ensure the bot's role has Add Reactions allowed.
Ticket channel not being created
Possible causes:
- Bot lacks
Manage Channels— Check guild-level bot permissions. - categoryId is wrong — The channel will fail to create silently. Verify the ID with
!ticket idand compare against yourconfig.json. - Bot can't see the category — Ensure the bot's role can view the category.
Users can't see the ticket channel after it's created
The permission overwrites may not have applied correctly.
Check:
- The
categoryIdinconfig.jsonmatches the actual category - The category itself doesn't have overly restrictive overwrites that override channel-level ones
- The bot role is positioned high enough in the role hierarchy to manage channel permissions
DM transcript not delivered
[TicketBot] Could not DM transcript to opener (123456789012345678): ...
[TicketBot] There is currently a known bug in Fluxer, that is making it
impossible for bots to send Direct messages to users.
This is a known Fluxer platform bug. The transcript is always saved to disk in transcript-archive/ regardless of DM delivery. Retrieve it with:
!ticket transcript
"Login failed"
[TicketBot] ❌ Login failed: 401 Unauthorized
Fix: Your FLUXER_BOT_TOKEN in .env is invalid, expired, or regenerated. Go to Fluxer → Applications → Bot → Reset Token → copy the new token into .env.
Bot responds in the wrong server
The bot filters all commands to GUILD_ID. If the GUILD_ID in .env doesn't match your server's ID, commands will be silently ignored.
Fix: Use !ticket id in the correct server to confirm the channel/guild ID, then update GUILD_ID in .env.
State lost after restart
The bot stores open ticket data in memory (store.js). A restart clears all in-memory state, so:
- Previously open tickets are no longer tracked (closing them via command won't work — delete channels manually)
- The panel message ID is forgotten — users can still react to the old panel, but to be safe run
!ticket panelagain after a restart
Long-term fix: Replace the Map/Set structures in store.js with a SQLite or JSON-file backend to persist state across restarts.
Still stuck?
- Set
LOG_LEVEL=debugin.envandNODE_ENV=developmentfor verbose output - Check the console for
[TicketBot]error lines - Verify all IDs with
!ticket id @role #channel