DiscordWhitelist
Author: Skeeterbolt
DiscordWhitelist is a Discord role whitelist, in-game link lobby, status embed, and staff command system for ARK: Survival Ascended servers running Ark:SA API.
It is built for server owners who want player access controlled through Discord rather than manually tracking EOS IDs, editing files, or constantly responding to "am I whitelisted yet?" tickets.
Current version: v0.2.0
Built/compiled against: Ark:SA API V2.03
Tested against: Ark:SA API V2.03 on ARK: Survival Ascended
TLDR:
DiscordWhitelist lets ASA server owners control server access from Discord. Players link themselves with a short in-game code, staff approve them with a Discord role, and the server automatically checks that role when they join. It also includes a clean Discord status embed, Kick Me crash-recovery button, temp-ban role support, and staff RCON commands.
https://discord.gg/aSrruSMNRW
Dependencies and Disclosures
Required:
Network connections used:
Data stored locally:
Data is stored locally in JSON/JSONL files under Bot/data.
SQL is not required.
Version 0.2.0 does not include a license check, subscription check, hidden telemetry, credential collection, remote shell access, or destructive file commands.
Do not assume compatibility with ArkApi versions older than the listed build/test version. After major ASA or ArkApi updates, test on a non-production server first.
Features
Discord Role Whitelist
Automatic Discord to EOS Linking
In-Game Link Code Flow
Frozen Link Lobby
Link Lobby Teleport
Private RCON Link Messages
Role Removal Enforcement
Discord Temp Ban Role
Clean Discord Status Embed
Kick Me Button
Discord Staff Commands
Included Staff Commands
Role-Based Staff Permissions
Multi-Server Friendly
Simple Storage
Hosted Server Notes
Full mode requires Ark:SA API plugin support.
If you run your own server or rent a Windows machine with RDP access, this is the recommended setup. Run the DiscordWhitelist bot on the same machine and use 127.0.0.1 for the bot/API URL.
If you use a web panel host like Nitrado or GPORTAL, FTP alone cannot run the Discord bot. FTP only uploads and edits files. It cannot start an exe, batch file, Node.js app, or background service.
For panel-hosted servers, the DiscordWhitelist bot must run somewhere else:
Panel-hosted full mode is only possible if the host allows:
If the host does not allow Ark:SA API or custom DLL plugins, the frozen link lobby, link lobby teleport, and automatic join check cannot work. In that case, DiscordWhitelist can still be used in RCON-only mode for status embeds and staff commands if external RCON is available.
Install Summary
1. Install Ark:SA API on the ASA server.
2. Copy the DiscordWhitelist plugin folder into ArkApi/Plugins.
3. Create a dedicated Discord bot in the Discord Developer Portal.
4. Install Node.js LTS on the machine that will run the bot.
5. Edit Bot/config.json with the Discord bot token, Discord IDs, role IDs, and RCON settings.
6. Edit the ASA plugin config with the same ApiToken and matching ServerId.
7. Optional: set LinkLobbyTeleport.Enabled true after copying coordinates from cheat DWhitelist.Where.
8. Start the DiscordWhitelist bot.
9. Start the ASA server.
10. Check the ArkApi log for Loaded plugin DiscordWhitelist.
11. Test -status, -listplayers, and the in-game link flow.
Discord Bot Setup
This package requires a dedicated Discord bot.
In the Discord Developer Portal:
Basic Player Flow
1. Player joins the server.
2. DiscordWhitelist checks if the player's EOS ID is linked.
3. If not linked, the player is held in place.
4. If link lobby teleport is enabled, the player is moved to the configured waiting area.
5. The player receives a private link code in game.
6. The player DMs the bot with -link CODE.
7. Staff gives the player the whitelist role in Discord.
8. The player is released and can play.
9. If the whitelist role is removed later, access is removed.
9. If the temp-ban role is added, the player is denied.
RCON / Console Commands
- DWhitelist.Reload
Reloads the ASA plugin config.
- DWhitelist.Pending
Shows players currently pending/frozen.
- DWhitelist.Config
Shows the plugin settings currently loaded by the ASA server.
- DWhitelist.Check <eos>
Forces an access check for a player EOS ID.
- DWhitelist.Release <eos>
Emergency manual release for a frozen player. This does not grant whitelist access.
- cheat DWhitelist.Where
In-game admin command that prints your current position for future lobby/setup use.
Discord Commands
- -help
Shows available commands.
- -whoami
Shows your Discord ID and linked player info.
- -link CODE
Links your Discord account to your ASA/EOS ID.
- -status
Shows server status.
- -listplayers
Lists online players from RCON.
- -kick @user reason
Kicks a linked player.
- -ban @user reason
Bans and kicks a linked player.
- -tempban @user minutes reason
Temporarily bans a linked player.
- -unban @user reason
Unbans a linked player.
- -broadcast message
Sends a server chat message.
- -saveworld
Saves the map.
- -sync @user
Manually syncs a Discord member's whitelist/temp-ban state.
Configuration
The main bot config is:
Bot/config.json
The ASA plugin config is:
ArkApi/Plugins/DiscordWhitelist/config.json
Important values:
- ApiToken
Shared secret between the bot/API and the ASA plugin.
- DiscordBot.Token
Token from the Discord Developer Portal.
- DiscordBot.GuildId
Your Discord server ID.
- AccessControl.WhitelistRoleIds
Discord roles allowed to join.
- AccessControl.TempBanRoleIds
Discord roles denied from joining.
- Servers[].RconPort
ASA RCON port.
- Servers[].RconPassword
ASA admin/RCON password.
- ServerId
Must match between the bot config and ASA plugin config.
Author: Skeeterbolt
DiscordWhitelist is a Discord role whitelist, in-game link lobby, status embed, and staff command system for ARK: Survival Ascended servers running Ark:SA API.
It is built for server owners who want player access controlled through Discord rather than manually tracking EOS IDs, editing files, or constantly responding to "am I whitelisted yet?" tickets.
Current version: v0.2.0
Built/compiled against: Ark:SA API V2.03
Tested against: Ark:SA API V2.03 on ARK: Survival Ascended
TLDR:
DiscordWhitelist lets ASA server owners control server access from Discord. Players link themselves with a short in-game code, staff approve them with a Discord role, and the server automatically checks that role when they join. It also includes a clean Discord status embed, Kick Me crash-recovery button, temp-ban role support, and staff RCON commands.
https://discord.gg/aSrruSMNRW
Dependencies and Disclosures
Required:
- Ark:SA API installed on the ASA server
- Windows ASA dedicated server environment
- Node.js 18 or newer for the Discord bot/API
- npm dependency: discord.js
- Dedicated Discord bot token
- Discord Server Members Intent
- Discord Message Content Intent
- ASA RCON enabled
- RCON host, port, and password configured
Network connections used:
- Discord bot connects to Discord's API
- Bot/API connects to the ASA server through RCON
- ASA plugin connects to the configured DiscordWhitelist ApiBaseUrl
- npm install downloads the listed Node.js dependency packages
Data stored locally:
- Discord user IDs
- linked ASA/EOS player IDs
- temporary link codes
- whitelist/temp-ban state
- staff command audit logs
- Kick Me audit logs
Data is stored locally in JSON/JSONL files under Bot/data.
SQL is not required.
Version 0.2.0 does not include a license check, subscription check, hidden telemetry, credential collection, remote shell access, or destructive file commands.
Do not assume compatibility with ArkApi versions older than the listed build/test version. After major ASA or ArkApi updates, test on a non-production server first.
Features
Discord Role Whitelist
- Lock your ASA server behind one or more Discord roles
- Players can only join when their Discord account has your approved whitelist role
- Staff approves players the normal Discord way by giving them a role
- Removing the role removes access
- Works well for RP servers, private communities, donor/test servers, and application-based whitelists
Automatic Discord to EOS Linking
- No more asking players to find and send their EOS ID manually
- The ASA plugin detects the player's EOS ID when they join
- The system creates a short one-time link code
- The player DMs the Discord bot with the code
- DiscordWhitelist saves the Discord ID to EOS ID link automatically
- Once linked, future joins are checked automatically
In-Game Link Code Flow
- Player joins the ASA server
- If the player is not linked, the plugin holds them in place
- The bot/API creates a temporary code like ABC123
- The code is sent privately in-game through RCON
- The player DMs the bot: -link ABC123
- The system now knows which Discord account belongs to that ASA player
- If the player has the whitelist role, they are released
- If the player does not have the whitelist role yet, they stay held until staff approves them
Frozen Link Lobby
- New or unapproved players can be frozen while they link or wait for approval
- Prevents unapproved players from running around the map
- Prevents random first-join access while staff is still reviewing
- Linked players without the whitelist role stay pending instead of being kicked
- Pending players are rechecked automatically
- Includes crash-safe delayed kick handling for denied players
Link Lobby Teleport
- Optional X/Y/Z config sends pending players to one chosen start area
- Use cheat DWhitelist.Where while standing in the spot you want
- Paste the returned coordinates into the plugin config
- Great for servers that want new players held at an intake room, starter zone, or rules area
Private RCON Link Messages
- Link codes are sent privately to the joining player
- The whole server does not see the code
- Reduces wrong-player linking and chat spam
- Message text is configurable
Role Removal Enforcement
- If the whitelist role is removed, the player can be kicked and blocked
- Useful for failed applications, rule violations, or removed community members
- Access is controlled from Discord instead of editing server files
Discord Temp Ban Role
- Add a temp-ban role to block a linked player
- Temp-ban wins even if the player still has the whitelist role
- Remove the temp-ban role when the player is allowed back
- Works as a simple Discord-based punishment workflow
Clean Discord Status Embed
- Posts a clean server status panel in Discord
- Shows red/yellow/green server health
- Shows current player count
- Shows max players
- Shows map name
- Shows next restart time
- Supports a large server image/logo
- Refreshes the same embed instead of spamming new messages
Kick Me Button
- Players stuck after a crash can click Kick Me in Discord
- The bot kicks their linked in-game body through RCON
- Helps players reconnect without waiting for staff
- Can require the player to be linked first
- Includes cooldown and audit logging
Discord Staff Commands
- Staff can run approved RCON commands from Discord
- No separate RCON tool required for common actions
- Discord roles control commands
- Owners can give full access to trusted roles
- Moderators can be limited to safer commands
Included Staff Commands
- -status
- -listplayers
- -kick
- -ban
- -tempban
- -unban
- -broadcast
- -saveworld
- -sync
- -whoami
- -help
Role-Based Staff Permissions
- Configure which Discord roles can run which commands
- Example: owners can run everything
- Example: admins can kick, ban, broadcast, save, and list players
- Example: support staff can list players and kick only
- Every server owner can shape staff permissions for their community
Multi-Server Friendly
- Config supports multiple ASA servers
- Each server can have its own ID, name, map, RCON port, restart times, and image
- Useful for clusters where one Discord bot manages several maps
- Server IDs are chosen by you, such as island, center, scorched, or aberration
Simple Storage
- No SQL setup required
- Player links are saved in JSON files
- Access state is saved in JSON files
- Audit logs are saved in readable JSONL files
- Easy to back up and move
Hosted Server Notes
Full mode requires Ark:SA API plugin support.
If you run your own server or rent a Windows machine with RDP access, this is the recommended setup. Run the DiscordWhitelist bot on the same machine and use 127.0.0.1 for the bot/API URL.
If you use a web panel host like Nitrado or GPORTAL, FTP alone cannot run the Discord bot. FTP only uploads and edits files. It cannot start an exe, batch file, Node.js app, or background service.
For panel-hosted servers, the DiscordWhitelist bot must run somewhere else:
- your own PC
- a small VPS
- a rented Windows machine
- another always-online machine
Panel-hosted full mode is only possible if the host allows:
- Ark:SA API / AsaApi
- custom DLL plugin uploads
- plugin loading from ArkApi/Plugins
- external RCON access
- outbound HTTP from the game server to the bot/API
If the host does not allow Ark:SA API or custom DLL plugins, the frozen link lobby, link lobby teleport, and automatic join check cannot work. In that case, DiscordWhitelist can still be used in RCON-only mode for status embeds and staff commands if external RCON is available.
Install Summary
1. Install Ark:SA API on the ASA server.
2. Copy the DiscordWhitelist plugin folder into ArkApi/Plugins.
3. Create a dedicated Discord bot in the Discord Developer Portal.
4. Install Node.js LTS on the machine that will run the bot.
5. Edit Bot/config.json with the Discord bot token, Discord IDs, role IDs, and RCON settings.
6. Edit the ASA plugin config with the same ApiToken and matching ServerId.
7. Optional: set LinkLobbyTeleport.Enabled true after copying coordinates from cheat DWhitelist.Where.
8. Start the DiscordWhitelist bot.
9. Start the ASA server.
10. Check the ArkApi log for Loaded plugin DiscordWhitelist.
11. Test -status, -listplayers, and the in-game link flow.
Discord Bot Setup
This package requires a dedicated Discord bot.
In the Discord Developer Portal:
- Create a new application
- Create a bot
- Copy the bot token
- Enable Server Members Intent
- Enable Message Content Intent
- Invite the bot to your Discord server
- Give it permission to view channels, send messages, embed links, read message history, and manage messages
Basic Player Flow
1. Player joins the server.
2. DiscordWhitelist checks if the player's EOS ID is linked.
3. If not linked, the player is held in place.
4. If link lobby teleport is enabled, the player is moved to the configured waiting area.
5. The player receives a private link code in game.
6. The player DMs the bot with -link CODE.
7. Staff gives the player the whitelist role in Discord.
8. The player is released and can play.
9. If the whitelist role is removed later, access is removed.
9. If the temp-ban role is added, the player is denied.
RCON / Console Commands
- DWhitelist.Reload
Reloads the ASA plugin config.
- DWhitelist.Pending
Shows players currently pending/frozen.
- DWhitelist.Config
Shows the plugin settings currently loaded by the ASA server.
- DWhitelist.Check <eos>
Forces an access check for a player EOS ID.
- DWhitelist.Release <eos>
Emergency manual release for a frozen player. This does not grant whitelist access.
- cheat DWhitelist.Where
In-game admin command that prints your current position for future lobby/setup use.
Discord Commands
- -help
Shows available commands.
- -whoami
Shows your Discord ID and linked player info.
- -link CODE
Links your Discord account to your ASA/EOS ID.
- -status
Shows server status.
- -listplayers
Lists online players from RCON.
- -kick @user reason
Kicks a linked player.
- -ban @user reason
Bans and kicks a linked player.
- -tempban @user minutes reason
Temporarily bans a linked player.
- -unban @user reason
Unbans a linked player.
- -broadcast message
Sends a server chat message.
- -saveworld
Saves the map.
- -sync @user
Manually syncs a Discord member's whitelist/temp-ban state.
Configuration
The main bot config is:
Bot/config.json
The ASA plugin config is:
ArkApi/Plugins/DiscordWhitelist/config.json
Important values:
- ApiToken
Shared secret between the bot/API and the ASA plugin.
- DiscordBot.Token
Token from the Discord Developer Portal.
- DiscordBot.GuildId
Your Discord server ID.
- AccessControl.WhitelistRoleIds
Discord roles allowed to join.
- AccessControl.TempBanRoleIds
Discord roles denied from joining.
- Servers[].RconPort
ASA RCON port.
- Servers[].RconPassword
ASA admin/RCON password.
- ServerId
Must match between the bot config and ASA plugin config.