A Discord bot for a Roblox commissions server. It keeps one queue embed updated when you run slash commands:
/queue_addadds a customer to the active queue and refreshes the embed./queue_updatemoves a customer to another status and refreshes the embed.- Setting a customer's status to
completedremoves them from the embed. /queue_removemanually removes a customer./queue_panelcreates or refreshes the queue message in the current channel.
- Install Node.js 18 or newer.
- In this folder, run:
npm install- Copy
.env.exampleto.envand fill in:
DISCORD_TOKEN=...
CLIENT_ID=...
GUILD_ID=...- Start the bot:
npm startThe bot registers its slash commands automatically on startup, so they show up
in Discord without any extra step. This also means it works on hosts like Railway,
Render, or Heroku that only run npm start.
If GUILD_ID is set, commands are registered to that server and appear instantly.
Without GUILD_ID, they are registered globally and can take up to an hour to appear.
You can still register commands manually without starting the bot:
npm run deploySet DISCORD_TOKEN, CLIENT_ID, and (recommended) GUILD_ID as service variables
in the Railway dashboard, then deploy. Railway runs npm start, which logs in and
registers the slash commands automatically.
Create an application and bot at https://discord.com/developers/applications.
Enable these bot settings:
SERVER MEMBERS INTENTis not required.MESSAGE CONTENT INTENTis not required.
Invite the bot with:
applications.commandsbot- Permission:
Send Messages,Embed Links,Read Message History
Only members with a whitelisted role may use the queue commands. Set the role IDs (comma-separated) with:
ALLOWED_ROLE_IDS=1496697445340545045,1496697894202380540If unset, it falls back to the two staff role IDs baked into the code.
Discord embeds can use a big top image, but it must be a public URL. Put your JACKITECT-style banner image URL in:
BANNER_IMAGE_URL=https://example.com/banner.pngThe rest of the queue is built directly into the embed.