VACbot picture

VACbot

is a custom Discord bot created to help simracing communities with their operation.

'VAC' stands for my primary racing community, VintageAC (Vintage Appreciation Community).
You can join and race with us or contact me (JirkaS) there about the bot.

Most of the bot's features are for the Assetto Corsa only.

Bot is programmed in Java and uses the Javacord library.
Web part uses Jetty, data are stored in PostgreSQL, everything is running on Debian Linux.

VACbot features

Booking system

You can define races and have the racers book them. The result is the final Assetto Corsa 'entry_list.ini' file that you just upload to your server.

Skin management

Bot has a large database of existing skins. Each racer can upload their own skin, which is then hosted by the bot.

Assetto Corsa servers monitoring

Bot can monitor the status of Assetto Corsa servers - up/down state, server configuration and user joins/leaves.

Voice channels monitoring

Bot can monitor Discord voice channels and inform who joins/leaves via TTS messages.



VACbot command reference

Management channel commands

!quit

Stop the bot immediately (emergency stop).

Syntax:
!quit password

Example:
!quit Pa$$w0rd

!state

List the AC server(s) state to the AC servers channel.

Syntax:
!state serverstring

Examples:
!state race
!state trackday
!state vac

!setrace

Create new race or update race data.

Syntax:
!setrace folowed by attached text file

Example content of !setrace file:
#
# example '!setrace' file
#
# Basically it is a Java .properties file with the all related rules.
# Extra properties ale simply ignored
#

# race name, max 16 characters (valid are a-z, A-Z, 0-9, _, -)
RACE_NAME=Sunday

# race information, max 256 characters, can be omitted/commented out
INFO=Night race.

# times in ISO 8601 format
RACE_START_TIME=2020-06-14T18:00:00Z
BOOKING_END_TIME=2020-06-14T16:45:00Z

# number of pits, valid are numbers 2-100
PITS=32

# skins can be 'unique' or 'any'
SKINS=unique

# cars divided by comma or semicolon
CARS=ks_alfa_33_stradale;ks_ferrari_250_gto;ks_ford_gt40;ks_porsche_917_k

# limiting the number of cars
# no limits
#CAR_COUNT_LIMITS=0
# set the same limit for all cars
#CAR_COUNT_LIMITS=10
# set the individual limit for each car, divided by comma or semicolon
CAR_COUNT_LIMITS=2,2,0,4

# end of file

!endrace

Remove the race and bookings.

Syntax:
!endrace racename

Example:
!endrace sunday

!add

Add user and car to the race.

Syntax:
!add racename @user \content\cars\...

Example:
!add sunday @SirCrashalot \content\cars\ks_mazda_787b\skins\8_kahlua

!remove

Remove user from the race.

Syntax:
!remove racename @user

Example:
!remove sunday @SirCrashalot

!motd

Set/clear Message Of The Day.

Syntax:
!motd message|clear

Examples:
!motd Please read updated booking instructions.
!motd clear

!cleanup

Delete all not pinned messages from booking channel and clear the uploaded skins database.

Syntax:
!cleanup

Booking channel commands

!register

Link Discord user with Steam GUID and in game name.

Syntax:
!register SteamGUID
!register SteamGUID In Game Name

Examples:
!register 76512345678901234
!register 76512345678901234 Sir Crashalot

!whoami

Show link of the Discord user with Steam GUID and in game name.

Syntax:
!whoami

!list

Print current booking list (usually not needed).

Syntax:
!list

!book

Book user and car to the race.

Syntax:
!book racename \content\cars\...

Example:
!book sunday \content\cars\ks_mazda_787b\skins\8_kahlua

!unbook

Unbook user from the race.

Syntax:
!unbook racename

Example:
!unbook sunday