CES RoleCall
#π CES RoleCall
#Installation & Setup Guide
CES RoleCall is a Discord bot that provides live status boards for your server.
It is designed for teams, developers, creators, and businesses that want to show:
- Open team positions
- Commission availability
- Commission lead times
- Automatic role notifications when a status changes
The bot keeps one persistent embed for each board and updates that embed instead of creating a new message every time.
#β¨ Features
CES RoleCall includes:
- π Open Positions board
- π¨ Commission Status board
- π Persistent status embeds
- π Optional role pings when statuses change
- π§βπΌ Team/position management
- π¨ Commission management
- ποΈ Remove status entries
- π Private status overview
- π Administrator-only commands
- πΎ Local JSON data storage
- π Optional global slash commands
- β‘ Instant guild slash commands when
GUILD_IDis configured
#π¦ Requirements
Before installing CES RoleCall, make sure you have:
- A Discord server
- Permission to add bots to the server
- A Discord Developer Portal account
- Node.js v18 or newer
- A computer, VPS, or hosting service capable of running Node.js
CES RoleCall does not require a MySQL database.
Status information is stored locally in:
config.jsonThe locations of the two persistent Discord embeds are stored in:
message_map.json#π€ Step 1 β Create Your Discord Bot
Go to the Discord Developer Portal:
https://discord.com/developers/applications
- Click New Application.
- Enter a name for your bot.
- Click Create.
- Open the Bot section.
- Click Reset Token.
- Copy your bot token.
β οΈ Never share your bot token.
Anyone who has your token may be able to control your bot.
If your token is accidentally exposed, reset it immediately in the Discord Developer Portal.
#π Step 2 β Get Your Application ID
In the Discord Developer Portal:
- Open your application.
- Go to General Information.
- Find Application ID.
- Copy it.
You will use this as:
CLIENT_ID=your-application-id#π Step 3 β Get Your Server ID
You can optionally configure RoleCall to register slash commands directly to one Discord server.
This makes the commands appear almost immediately.
First enable Developer Mode:
- Open Discord.
- Open User Settings.
- Select Advanced.
- Enable Developer Mode.
Then:
- Right-click your Discord server.
- Select Copy Server ID.
You will use this as:
GUILD_ID=your-server-id#Do I need GUILD_ID?
No.
If you configure:
GUILD_ID=123456789012345678commands are registered specifically to that server and appear instantly.
If you leave it blank:
GUILD_ID=commands are registered globally.
Global slash commands can take up to an hour to appear the first time.
#π Step 4 β Create Your Role Ping Roles
RoleCall can optionally ping a Discord role whenever a status changes.
You can configure two separate roles:
TEAM_ROLE_ID=
COMMISSION_ROLE_ID=#Team Role
This role is pinged when an Open Positions status changes.
Example:
TEAM_ROLE_ID=123456789012345678#Commission Role
This role is pinged when a Commission Status changes.
Example:
COMMISSION_ROLE_ID=987654321098765432Both settings are optional.
If you leave them blank, the bot will still post the status update without mentioning a role.
#π Step 5 β Get the Role IDs
With Developer Mode enabled:
- Open your Discord server.
- Go to Server Settings β Roles.
- Find the role you want to use.
- Right-click the role.
- Select Copy Role ID.
Paste the ID into your .env file.
Example:
TEAM_ROLE_ID=123456789012345678
COMMISSION_ROLE_ID=987654321098765432#π Step 6 β Invite the Bot
Go to:
Discord Developer Portal β Your Application β OAuth2 β URL Generator
Select these scopes:
bot
applications.commandsUnder Bot Permissions, enable at least:
- View Channels
- Send Messages
- Embed Links
- Read Message History
- Mention Everyone
The bot needs permission to send and edit messages in the channels where you use RoleCall.
The bot does not require privileged gateway intents.
#π₯ Step 7 β Extract CES RoleCall
Extract the downloaded CES RoleCall ZIP file.
Your folder should contain files similar to:
CES_Role_Call/
βββ bot.js
βββ package.json
βββ config.json
βββ message_map.json
βββ .env.example
βββ .gitignore
βββ README.md
βββ LICENSE.txt#π¦ Step 8 β Install Dependencies
Open a terminal inside the CES RoleCall folder.
Run:
npm installThis installs the required Node.js packages.
CES RoleCall uses:
discord.jsdotenv
#βοΈ Step 9 β Create Your .env File
Copy:
.env.exampleand rename the copy to:
.envOpen the .env file.
You should have:
DISCORD_TOKEN=your-bot-token
CLIENT_ID=your-application-id
GUILD_ID=your-server-id
TEAM_ROLE_ID=
COMMISSION_ROLE_ID=#π Step 10 β Configure .env
#DISCORD_TOKEN
Your Discord bot token.
DISCORD_TOKEN=your-bot-token#CLIENT_ID
Your Discord application's Application ID.
CLIENT_ID=123456789012345678#GUILD_ID
Your Discord server ID.
GUILD_ID=123456789012345678This is optional.
To use global commands:
GUILD_ID=#TEAM_ROLE_ID
The role that should be pinged when an Open Positions status changes.
TEAM_ROLE_ID=123456789012345678Optional.
#COMMISSION_ROLE_ID
The role that should be pinged when a Commission Status changes.
COMMISSION_ROLE_ID=987654321098765432Optional.
#π Protect Your .env
Never share your .env file publicly.
Do not post your bot token in:
- Discord
- GitHub
- Screenshots
- Forums
- Support tickets
- Public websites
Keep .env private.
#βΆοΈ Step 11 β Start CES RoleCall
Run:
npm startIf everything is configured correctly, you should see messages similar to:
β
Slash commands registered to your server (instant).
β
Logged in as YourBot#1234If GUILD_ID is blank, you may instead see:
β
Slash commands registered globally (can take up to an hour to appear).Keep the process running for the bot to remain online.
#π Step 12 β Create Your Open Positions Board
CES RoleCall can display your available team positions.
Use:
/set_team_statusYou must provide:
name
statusExample:
/set_team_status name:Development Team status:OpenThe bot will create or update the Open Positions embed.
#π¨ Step 13 β Create Your Commission Board
Use:
/set_commission_statusYou must provide:
name
status
lead_timeExample:
/set_commission_status name:Vehicle Liveries status:Open lead_time:3-4 DaysThe bot will create or update the Commission Status embed.
#π Persistent Boards
CES RoleCall creates one persistent embed for each board.
The two boards are:
π Open Positions
π¨ Commission StatusWhen you update an existing entry, the bot edits the existing embed instead of posting another new embed.
This keeps your Discord channel clean.
#π§βπΌ Open Positions
Use Open Positions to show roles or positions that your organization is currently accepting.
Examples:
Game Developer
3D Artist
Discord Developer
Web Developer
QA Tester
Creative & Content
BusinessExample:
/set_team_status name:Game Developer status:OpenThe board will display:
π§βπΌ Game Developer
β
Status: Open#Commission Status
Use Commission Status to show what services or commission types are currently available.
Examples:
FiveM Scripts
Discord Bots
Website Templates
3D Models
Custom Websites
Game DevelopmentExample:
/set_commission_status name:Discord Bots status:Open lead_time:3-5 DaysThe board will display:
π¨ Discord Bots
β
Status: Open
β±οΈ Lead Time: 3-5 Days#Removing a Team Status
To remove a position from the Open Positions board:
/remove_team_status name:Development TeamExample:
/remove_team_status name:Game DeveloperThe entry will be removed from the board.
#Removing a Commission Status
To remove a commission type:
/remove_commission_status name:Vehicle LiveriesThe entry will be removed from the Commission Status board.
#Viewing Current Statuses
Use:
/list_statusesThis displays the current contents of both boards.
The response is only visible to you.
It includes:
π Open Positions
π¨ Commission StatusThis is useful for quickly checking your current statuses without scrolling through your Discord channels.
#Role Notifications
If you configured a role ID, RoleCall sends a notification whenever a status is changed.
For example:
π @CES Team
Game Developer status changed to OpenFor commissions:
π @Commissions
Vehicle Liveries commission status changed to Open
β±οΈ Lead Time: 3-4 Days#Disabling Role Pings
Role pings are optional.
To disable team notifications:
TEAM_ROLE_ID=To disable commission notifications:
COMMISSION_ROLE_ID=Restart the bot after changing the .env file.
#Administrator Permissions
All RoleCall slash commands require the user to have the Discord:
Administratorpermission.
Users without Administrator permission will receive:
β Admins only.The configured
TEAM_ROLE_IDandCOMMISSION_ROLE_IDroles are for notifications. They do not grant users permission to manage RoleCall.
#Data Storage
RoleCall does not use a database.
It uses two JSON files.
#config.json
Stores the current status information.
Example:
{
"teamStatus": {},
"commissionStatus": {}
}When you add statuses, the bot updates this file automatically.
You should normally not edit this file manually.
#message_map.json
Stores the Discord channel and message IDs for the persistent boards.
Example:
{
"open_positions": {
"channelId": "",
"messageId": ""
},
"commission_status": {
"channelId": "",
"messageId": ""
}
}The bot updates this file automatically when it creates a board.
You should normally not edit this file manually.
#Backing Up RoleCall
Before moving the bot to another computer or hosting provider, back up:
config.json
message_map.json
.envThe most important files are:
config.json
message_map.jsonThese preserve your statuses and the locations of your boards.
Keep .env private.
#Updating CES RoleCall
Before updating:
- Stop the current bot.
- Back up
config.json. - Back up
message_map.json. - Back up
.env. - Download the new version.
- Replace the old bot files.
- Restore your configuration files.
- Run:
npm install- Start the bot:
npm start- Test the slash commands.
Important: Do not overwrite your
.env,config.json, ormessage_map.jsonwithout creating backups.
#Keeping the Bot Online
CES RoleCall must remain running to respond to Discord commands.
You can run it on:
- Your computer
- A VPS
- A dedicated server
- A Node.js hosting service
- Railway
- Replit
- Another service that supports long-running Node.js applications
For production use, a VPS or reliable Node.js hosting service is recommended.
#Troubleshooting
#"Missing required setting(s)"
If you see:
β Missing required setting(s)make sure your .env contains:
DISCORD_TOKEN=
CLIENT_ID=Both are required.
#"Failed to log in"
This normally means your bot token is incorrect.
Check:
DISCORD_TOKEN=your-bot-tokenMake sure:
- The token is correct.
- There are no extra spaces.
- You are using the bot token, not the Application ID.
- The token has not been reset.
If necessary, generate a new token in the Discord Developer Portal.
#Slash Commands Are Missing
If slash commands do not appear:
#If using GUILD_ID
Check:
GUILD_ID=your-server-idMake sure it is the correct Discord server ID.
Guild commands should appear quickly.
#If using global commands
If:
GUILD_ID=commands are registered globally.
The first global registration can take up to an hour to appear.
#Bot Has Missing Permissions
Make sure the bot has permission to:
- View Channels
- Send Messages
- Embed Links
- Read Message History
- Mention Everyone
Check the channel permissions if the bot can see the channel but cannot post.
#Role Is Not Being Pinged
Check:
TEAM_ROLE_ID=or:
COMMISSION_ROLE_ID=Make sure the role ID is correct.
Also check the Discord role settings.
The bot needs to be able to mention the role.
If the role is configured to only allow certain users/bots to mention it, make sure the bot has permission to do so.
#Status Board Is Not Updating
Check that the bot has:
View Channel
Send Messages
Embed Links
Read Message HistoryThe bot needs to be able to find and edit the existing board message.
If the original board message was deleted, RoleCall may need to create a fresh board message.
#A Board Message Was Deleted
If you delete a RoleCall board message manually, the saved message ID in:
message_map.jsonmay point to the deleted message.
If the bot cannot recover the board automatically, remove the saved message information for that board from message_map.json.
For example:
{
"open_positions": {
"channelId": "",
"messageId": ""
}
}Then run the appropriate status command again.
The bot will create a new board message.
Back up
message_map.jsonbefore manually changing it.
#Testing Checklist
Before putting CES RoleCall into production:
- [ ] Node.js v18+ is installed
- [ ] Discord bot application is created
- [ ] Bot token is configured
- [ ] Client ID is configured
- [ ] Guild ID is configured if desired
- [ ] Team role ID is configured if desired
- [ ] Commission role ID is configured if desired
- [ ] Bot is invited to the server
- [ ]
botscope is enabled - [ ]
applications.commandsscope is enabled - [ ] Bot permissions are configured
- [ ]
npm installcompleted - [ ] Bot starts without errors
- [ ] Slash commands appear
- [ ]
/set_team_statusworks - [ ]
/set_commission_statusworks - [ ]
/remove_team_statusworks - [ ]
/remove_commission_statusworks - [ ]
/list_statusesworks - [ ] Open Positions board updates
- [ ] Commission Status board updates
- [ ] Role pings work if configured
- [ ]
config.jsonis being updated - [ ]
message_map.jsonis being updated
#Support
If you need help with CES RoleCall, contact Crazy Eyes Studio Support.
When requesting support, include:
CES RoleCall Version:
1.0.0
Problem:
Describe the issue.
Error Message:
Copy the exact error message.
Node.js Version:
Your Node.js version.
Discord Server:
Your server name.
Steps to Reproduce:
1.
2.
3.
Screenshots:
Attach screenshots if available.β οΈ Never send your bot token,
.envfile, or other private credentials.
#License
CES RoleCall is provided by Crazy Eyes Studio.
See the included:
LICENSE.txtfor the complete license.
You may run and modify your own local copy for your own use, but redistribution, resale, sublicensing, reposting, or claiming authorship is not permitted without permission from Crazy Eyes Studio.
#More CES Documentation
Visit the CES Docs website for documentation for other Crazy Eyes Studio products.
CES Docs
https://docs.crazyeyesstudio.com/
Crazy Eyes Studio
#Β© Crazy Eyes Studio
CES RoleCall is a product of Crazy Eyes Studio.
All rights reserved
Was this article helpful?