6 minute read

The next major update of A.T.O.S. is coming soon to your servers! A big rewrite of the settings allowing more possibilities, with a more intuitive interface.

Anyway, the !tset command is changing, not only that, but don’t worry, your old settings will be converted (if it doesn’t bug).

Changes on !tset

The old system worked like this: admins set up global settings on the server (channels, roles, delays, registrations), in addition to parameters specific to a game (ruleset, ranking).

That system had many limits:

  • Only the settings under !tset games could change from one game to another, others are fixed
  • To create a configuration, you had to put the name of the game on Challonge, impossible to create multiple rulesets for one same game, not to mention unavailable games
  • It was painful to use this command, with quotes everywhere

Now we’re changing this.

Deletion of the !tset games command

All commands under !tset games are moved under !tset, !tset channels and !tset roles.

Before After
!tset games baninfo !tset baninfo
!tset games counters !tset counters
!tset games ranking !tset ranking
!tset games role !tset roles player
!tset games ruleset !tset channels ruleset
!tset games stages !tset stages

!tset games show is removed, !tset settings will display everything.


Small change with the stage list (!tset stages and !tset counters), before you had to use quotes for the list, now you only need to separate elements with commas.

  • Before: !tset games stages Battlefield "Final Destination" "Pokémon Stadium 2"
  • After: !tset stages Battlefield, Final Destination, Pokémon Stadium 2

All those settings are now global on the entire server by default. But then, you’re surely wondering how you can have multiple configurations like before? There is now a new system…

Added configurations


Now, you can create different configs, with the name you want, and you can edit any setting under this configuration.

When you create a tournament, you can choose which configuration to use. The settings of this config will then be used, the rest will use the default config.


Suppose you are setting up ATOS for the first time, and decide to configure the following settings:

  • Announcement channel: #announcements
  • Registrations channel : #registrations
  • Participant role: Registered
  • Delay before DQ: 10 minutes

This is the default configuration. You can then decide to add another config named “Melee” for example, and change the following settings:

  • Announcement channel: #melee-announcements
  • Delay before DQ: 15 minutes

If you add a tournament with the Melee configuration, the settings used are the following:

  • Announcement channel: #melee-announcements
  • Registrations channel : #registrations
  • Participant role: Registered
  • Delay before DQ: 15 minutes

As you can see, the bot will first use what you setup in your config, then the default settings will be used for the rest.

You can have as many configs as you want, not necessarily using the name of a specific game. The entirety of the different parameters can be setup under a config.


The only exception is !challongeset which remains global to the server, without possible config, due to technical reasons.

The !tset config config

It is therefore with this command that you can manage your configurations, with the following commands:

Command Description
!tset config add Add a new configuration
!tset config remove Delete one of the configurations
!tset config list List the available configurations
!tset config rename Rename a configuration
!tset config clone Clone an existing configuration

Try !tset config add MyConfig to create a configuration.


For using a name with spaces, use quotes : !tset config add "my long config"


Then, to setup a parameter under your config, you need to use the “flag” --config, or -c, after your command. Examples:

  • !tset delay 30m --config Melee
  • !tset channels ruleset #rules --config LoL
  • !tset roles participant Registered in tournament -c "Super Smash Bros. Ultimate"
  • !tset baninfo -c LoL (removing text)

Use quotes if there are spaces in the name of your config.

Always put that --config at the end of your command. If you don’t specify a config, you are editing the default parameters.

Then, to see your settings, it’s the same commande !tset settings! Without specifying a config, you will see default parameters. Else, do !tset settings --config "Your config" to see the parameters of your config.


A small change affecting the register, twostageregister, checkin, warntime and delay commands.

Those commands asked for a delay in minutes for different things. However, it wasn’t easy having to calculate how many minutes would be 3 days and 5 hours, so here again we changed the system a bit (and thanks for Red’s tools).

Now, to express a duration, you have to specify the unit in addition. For example, 10 minutes becomes 10m. Examples:

  • 30 seconds : 30s
  • 5 minutes : 5m
  • 2 hours : 2h
  • 3 days : 3d
  • 1 week : 1w

And it’s possible to stack those units, for example 2d5h30m = 2 days + 5 hours + 30 minutes

Examples with registrations: !tset register 1d2h 10m = Starting 1 day and 2 hours before, ending 10 minutes before the beginning of the tournament.


To disable a delay, instead of putting 0, put 0s instead. It is still possible to disable some delays individually like this.

The tester role

Small note apart on a function that already existed, but that was never announced: there is now a connection tester role which will be mentioned for any lag test request with !lag.

For that, use the command !tset roles tester

Thanks to Xyleff for implementing this feature!

The !setup command

The usage of that command doesn’t change (or almost) but most importantly have new features.

Usage of configurations

Like other commands, to use your config when adding the tournament, do !setup https://challonge.com/randomtournament --config "your config"

Note however that, like the previous system, if the name of your config matches the name of the game on Challonge, that config will be automatically used without specifying something.

Late setup

Before, the bot blocked the setup of a tournament if the date of an event (like registrations start) was passed, forcing the re-setup of that setting to continue.

Now, the bot will tell about those passed events, and will prompt you to continue the setup after all. Those events will therefore be skipped, and you can instead start them using manual commands, like !register start or !checkin start for example.

Setup an ongoing tournament

It’s now possible! You may have had to reset an ongoing tournament due to a problem, and you were forced to reset the bracket to relaunch the bot.

Now, if you use !setup on a tournament already launched on Challonge, the bot will prompt you to “resume” immediatly the tournament, that is to say the registrations will be skipped and the bot will gather participants from Challonge.

If the name of the participants matches Discord names, everything will go well, else the lost participants will be disqualified (but the bot will prompt a second time, with the name of the lost participants).

Data migration

What you had already configured will be imported.

If you had a single configured game with !tset games, everything will be imported in the default config.

If you had more than one game configured, then the settings will all be imported under new configurations with a matching name. Check this with !tset config list.

Release date

I will update ATOS on sunday 7th, march at 10 a.m. CET.

I’m giving this date since there may have issues at the beginning, so prevent having an ongoing tournament at the same time. Documentation will be updated at the same time, meanwhile refer to this article to see the changes and be prepared.

Why this update?

The settings system came to its limits when I thought about how to add teams mode (2vs2), as well as message template.

Those changes are setting up the bases for the next part ; next update will be the integration of teams, ATOS won’t be limited to 1v1 anymore!

Observe the complete list of commits on the pull request.

And a huge thanks to DiXaR and the Smash @ Lyon server for helping me test this big update!