Skip to main content
This guide will walk you through setting up SS-IMS and running your first automated match. You’ll go from initial installation to a fully functioning automated qualifier lobby.

Prerequisites

Before you begin, ensure you have:
  • .NET 9.0 SDK installed
  • PostgreSQL 13+ server running
  • A Discord bot token (create one here)
  • A Discord server for your tournament
  • An osu! account with IRC password for the bot

Steps

1

Clone the repository

Clone the SS-IMS repository to your local machine:
git clone https://github.com/ssconexion/ss-integrated-management-server.git
cd ss-integrated-management-server/ss.Integrated.Management.Server
2

Configure environment variables

Create a .env file in the project directory using the example template:
cp .env.example .env
Edit the .env file with your configuration:
DISCORD_BOT_TOKEN=your_discord_bot_token_here
DISCORD_MATCHES_CHANNEL_ID=1234567890
DISCORD_REFEREE_ROLE_ID=1234567890
DISCORD_ADMIN_ROLE_ID=1234567890
DISCORD_GUILD_ID=1234567890

POSTGRESQL_CONNECTION_STRING=Host=localhost;Database=ss_ims;Username=postgres;Password=yourpassword

LANGUAGE=en
Finding Discord IDs: Enable Developer Mode in Discord (User Settings → Advanced → Developer Mode), then right-click on channels/roles/servers and select “Copy ID”.
3

Set up the database

Apply the database schema to your PostgreSQL instance:
  1. Download the schema file from this gist
  2. Apply it to your database:
psql -U postgres -d ss_ims -f schema.sql
You can use tools like Adminer or pgAdmin for easier database management and data entry.
4

Install dependencies and run

Restore NuGet packages and start the server:
dotnet restore
dotnet run
You should see:
hola server de jd
The Discord bot will now be online in your server.
5

Link a referee account

In your Discord server, use the /linkirc command to link the bot’s osu! account:
/linkirc nombre:BotName osuId:1234567 ircPass:your_irc_password
Never share your IRC password publicly. Get it from https://osu.ppy.sh/p/irc
6

Create your first qualifier room

Schedule a qualifier lobby using the Discord command:
/createqualifierslobby roomId:1 date:05/03 hour:18:00 roundId:1
This creates a qualifier room scheduled for March 5th at 6:00 PM.
7

Start the automated match

When it’s time to run the qualifier lobby:
  1. Use /startref to initialize the match:
    /startref match-id:Q1 referee:YourName match-type:qualifiers
    
  2. A Discord thread will be created with IRC join instructions
  3. In the match chat (Discord thread or IRC), invite players:
    >invite
    
  4. Once all players are ready, start automation:
    >start
    
The bot will now automatically cycle through all qualifier maps!
8

Monitor and end the match

All match events are logged to the Discord thread in real-time. You can:
  • Monitor match progress in Discord
  • Use !panic if you need to pause automation
  • Use >panic_over to resume after resolving issues
When the match completes, end the referee session:
/endref match-id:Q1
This saves all match data to the database and archives the Discord thread.

What just happened?

You’ve successfully:
  1. ✅ Configured SS-IMS with Discord and PostgreSQL
  2. ✅ Set up a referee account with IRC access
  3. ✅ Created and scheduled a qualifier lobby
  4. ✅ Run a fully automated qualifier match
  5. ✅ Saved all match data to your database

Next steps

Discord commands

Explore all available Discord slash commands

Qualifiers automation

Deep dive into qualifier automation features

Elimination matches

Learn about head-to-head match automation

Database schema

Understand the tournament data structure

Troubleshooting

Bot doesn’t connect to Discord

  • Verify your DISCORD_BOT_TOKEN is correct
  • Ensure the bot has proper permissions in your server
  • Check that you’ve invited the bot with the applications.commands scope

IRC connection fails

  • Verify your IRC password at https://osu.ppy.sh/p/irc
  • Ensure your osu! account is not logged into IRC elsewhere
  • Check that the osu! account has appropriate permissions

Database connection errors

  • Verify PostgreSQL is running: sudo systemctl status postgresql
  • Check your connection string in .env
  • Ensure the database exists: psql -l

Match won’t start

  • Confirm you’ve applied the database schema
  • Check that the match exists in the database
  • Verify the referee role ID matches your Discord server
For more help, open an issue on GitHub.

Build docs developers (and LLMs) love