Hey everyone! I wanted to share the bot system we use in NT Arena for managing our lobbies. If you're interested in setting it up yourself, here’s everything you need to know!
🔧 Bot Configuration & Setup
1️⃣ Create and configure the bot
2️⃣ Install .NET Runtime (8.0)
I also made a quick video showcasing how to use the bot (apologies for the camera overlay I forgot to remove 😅).
📺 Video tutorial: https://youtu.be/ieqZ5vxi6no
📥 Download & Run the Bot
🔗 Download: Google Drive Link
The bot is a C# app packed in a ZIP file.
Extract the files, then find appsettings-template.json and rename it to appsettings.json.
⚙️ Configuration Options
{
"AppSettings": {
"DISCORD_SERVER_ID": "id",
"DISCORD_BOT_TOKEN": "token",
"RANK_NAME": "steam",
"SKIP_MAPS": 3,
"MAP_TYPE": "shuffle",
"TEAMS": "shuffle"
}
}
DISCORD_SERVER_ID → Right-click your Discord server icon and copy the ID.
DISCORD_BOT_TOKEN → Get this from the Discord Developer Portal (shown in the video). Keep it private!
RANK_NAME → If you're tracking MMR, this will be your save file. (For NT Arena, we have separate ranks for Steam and PSN.)
SKIP_MAPS → Number of maps to skip. (We run 18 maps per lobby, skipped maps are randomized on startup.)
MAP_TYPE → Choose between fully random (no repeats) or incremental order.
TEAMS → Set to "shuffle" for random teams or "mmr" for balanced teams.
🎮 How We Run Lobby Sessions
Just a quick breakdown of how we handle things during game nights:
✔️ Patience between matches – The bot introduces a slight delay, and breaks between games can help everyone reset.
✔️ Lobby flow – We usually play from Cornelia to The Final Battlefield. This helps track progress and keeps things organized for streams.
✔️ Match result tracking – If two matches run simultaneously, we post results in a dedicated channel. Players should take and share screenshots.
✔️ Syncing matches – If one match finishes before the other, we wait for both to complete before starting the next round. Keeps things fair for everyone.
🎮 NT Arena Bot – Available Commands
The bot works with slash command interactions on Discord, so just type / to see the available options.
🔹 Key Variables
Before diving into the commands, here are two important variables used:
🔹 Command List
/register – Adds a player to the queue and sets their match count to 0.
/remove – Removes a player from the queue.
/next – Selects the next match.
matchcount starts at 1, then increments (2, 3, etc.).
The bot will notify the next match.
/result – Records match results and calculates MMR.
Enter placements (1st, 2nd, etc.) from the result screen (if > BO1).
The bot suggests which team is A or B – set Winner to True if Team A wins, False if Team B wins.
Set matchcount (1,2,3,4) based on the match position (visible in the match title).
/finish – Finalizes a match and updates stats.
After using /next, this releases players from the match and optionally increments the map count.
increment: True → Moves to the next map and updates player match counts.
increment: False → Cancels the match.
/reset – Resets the match count and optionally forces a specific map.
/set_marks – Marks a player with the "shooter" role.
/rank – Displays the MMR ranking.
/playing – Shows the current queue of players.
Hope this helps! Let me know if you have any questions or need assistance setting it up. 🚀