A speedrun race announcer bot designed for multi-source and multi-destination usage. It currently supports the following data sources:
As well as the following platforms for announcements:
To use the prebuilt docker images head over to Packages. The application can be scaled horizontally as long as they're connected to the same database/redis.
Development images with the latest updates can be pulled from the race-announcer-bot-development package.
The bot follows a stateless design and and requires the following services to be available on your system:
- A Maria or MySQL database
- Redis >= 5
The repository is set up to utilize VSCode Dev Containers as well as GitHub Codespaces. Set up your environment variables (see /.devcontainer/workspace.env) and build the dev container to start coding.
You can start the application in watch mode via npm run dev. If you change the database models, make sure to create a migration first via npm run migration:generate.
The following environment variables must be set in order to run the application:
| Name | Description |
|---|---|
| DATABASE_TYPE | mariadb or mysql, depending on your installation (defaults to mysql) |
| DATABASE_USER | The user used to connect to the database |
| DATABASE_PASSWORD | The password to the database |
| DATABASE_PORT | The port of the database (defaults to 3306) |
| DATABASE_HOST | The host address or host name of your database |
| DATABASE_NAME | The name of the database |
| REDIS_HOST | The host address of your Redis instance |
| REDIS_PORT | The port on which Redis can be accessed |
| REDIS_PASSWORD | The password of your Redis instance |
| DISCORD_BOT_TOKEN | The access token of your Discord bot (See Discord Developer Portal in the Bot section) |
| DISCORD_CLIENT_ID | The client id of your Discord bot (See Discord Developer Portal in the OAuth 2 section) |
The following environment variables can be set optionally:
| Name | Description | Default |
|---|---|---|
| RACETIME_BASE_URL | The base url to racetime.gg | https://racetime.gg |
| SRL_BASE_URL | The base url to SpeedRunsLive | https://speedrunslive.com |
| SRL_API_BASE_URL | The base url of the SpeedRunsLive API | https://api.speedrunslive.com |
| DISCORD_GLOBAL_ADMINS | Comma-seperated list of user ids which should be considered bot admins on all guilds | - |
| LOG_LEVEL | The max log level. Can be info, debug or trace |
debug |
| ANNOUNCEMENT_SYNC_INTERVAL | The interval for announcement updates in cron format | 5/15 * * * * * |
| GAME_SYNC_INTERVAL | The interval for game database synchronization | 0 0 * * * * |
| WORKER_HEALTH_CHECK_INTERVAL | The interval for worker health checks | */10 * * * * * |
| ELASTICSEARCH_URL | The URL to your elasticsearch instance (if any) which logs will be streamed to | - |
| ELASTICSEARCH_INDEX | The elasticsearch index name | race-announcer-bot |
| ELASTICSEARCH_USE_DATASTREAM | Set this to true if you use data streams for ES indexing |
false |
Copyright 2022 Matteias Collet (https://github.com/BitPatty)
This project and all source files in this repository are
licensed under the GNU Affero General Public License v3
(see LICENSE).
