Skip to main content

A Discord bot for managing game server status embeds.

Project description

ministatus

A Discord bot for managing game server status embeds.

Status display Terminal demonstration Command demonstration

Supported Games / Query Protocols

  • Arma 3
  • Arma Reforger
  • FiveM
  • Minecraft (Bedrock Edition)
  • Minecraft (Java Edition)
  • Project Zomboid
  • Valve Source Query (A2S)

Setup

This project requires Python 3.11 or newer. You can manually install this project into a virtual environment:

$ python3 -m venv
$ .venv/bin/activate
(.venv) $ pip install ministatus
(.venv) $ ministatus  # or python3 -m ministatus

Or use one of pipx or uv to manage the virtual environment for you:

$ pipx install ministatus
$ ministatus
# Or:
$ uv tool install ministatus
$ ministatus
# Or:
$ uvx ministatus

Usage

$ ministatus
Usage: ministatus [OPTIONS] COMMAND [ARGS]...

  A Discord bot for managing game server status embeds.

Options:
  -p, --password SECRET  The password to unlock the database, if any
  -v, --verbose          Increase logging verbosity.
  -V, --version          Show the version and exit.
  -h, --help             Show this message and exit.

Commands:
  appdirs  Show directories and important files used by this application.
  config   Get or set a configuration setting.
  db       Manage the application database.
  invite   Print the bot's invite link.
  start    Start the Discord bot in the current process.

To start the bot and store your bot token:

$ ministatus start
2025-11-03 12:55:43 INFO     ministatus.db.migrations Migrating database to v5
No Discord bot token found in config.
Your token should look something like this:
MTI0NjgyNjg0MTIzMTMyNzI3NQ.GTIAZm.x2fbSNuYJgpAocvMM53ROlMC23NixWt-0NOjMc
Enter token:
2025-11-03 12:55:47 INFO     discord.client logging in using static token
2025-11-03 12:55:47 INFO     ministatus.bot.bot Loading extension ministatus.bot.cogs.cleanup
2025-11-03 12:55:47 INFO     ministatus.bot.bot Loading extension ministatus.bot.cogs.errors
2025-11-03 12:55:47 INFO     ministatus.bot.bot Loading extension ministatus.bot.cogs.owner
2025-11-03 12:55:47 INFO     ministatus.bot.bot Loading extension ministatus.bot.cogs.status
2025-11-03 12:55:47 INFO     ministatus.bot.bot Invite link:
    https://discord.com/oauth2/authorize?client_id=...
2025-11-03 12:55:47 INFO     ministatus.bot.cogs.status.cog Waiting 12.28s before starting query loop...
2025-11-03 12:55:47 INFO     discord.gateway Shard ID None has connected to Gateway.

To synchronize the bot's application commands with Discord, invite the bot to a server and send the message, @mention sync, to run the sync command. Alternatively, you can synchronize application commands during startup by using the --sync flag:

$ ministatus start --sync

Make sure to only synchronize once to avoid being ratelimited by Discord. If ministatus is updated with changes to application commands, you may need to synchronize them again.

Other commands

View where files are saved:

$ ministatus appdirs
user_data_path    = /home/thegamecracks/.local/share/ministatus
user_log_path     = /home/thegamecracks/.local/state/ministatus/log
$ ministatus db path
/home/ministatus/.local/share/ministatus/ministatus.db

View or change configuration settings:

$ ministatus config
Settings:
    appid = 1430326736775544903
    status-interval = 60
    token = ****

$ ministatus config --unset token  # unset token
$ ministatus config token xyz      # set token=xyz
$ ministatus config token          # get token
xyz

Enable database encryption (see notes below):

$ export MIST_PASSWORD=abc123
$ ministatus db encrypt
Successfully encrypted!
# Alteneratively use -p/--password:
$ ministatus -p abc123 db encrypt
Database is already encrypted 😴
# Or type the password interactively:
$ unset MIST_PASSWORD
$ ministatus config
Database Password:
There are no settings defined 🙁

[!NOTE] This requires SQLite3MultipleCiphers, SQLCipher, or an equivalent extension with PRAGMA key and PRAGMA rekey support. This is only possible if you are able to replace the sqlite3.dll or .so shared library used by Python.

In the case of uv-managed Python installations, they are statically built against SQLite and cannot be used with encryption extensions.

Environment Variables

The following environment variables are supported:

  • MIST_APPDIR_SUFFIX

    The suffix to append to the application directory, changing where the database and log files are written to. This allows for multiple instances of ministatus to run on the same user, as each instance uses a separate database and can load different Discord bot tokens.

    For example, MIST_APPDIR_SUFFIX=2 results in data files being stored in the ~/.local/share/ministatus-2 directory on Linux, and C:\Users\<name>\AppData\Local\thegamecracks\ministatus-2 on Windows.

  • MIST_PASSWORD

    The password to use for encrypting and decrypting the database. Most commands will abort if the database isn't already encrypted, aside from ministatus db encrypt itself and commands that don't require database access like ministatus appdirs.

    Alternatively, you can use the ministatus -p <password> ... option to provide a password, ministatus -p "" ... to always prompt for a password, or simply omit it and let ministatus prompt for the database password when needed. Note that the -p <password> form may be logged by your terminal to some history like .bash_history.

  • MIST_TOKEN

    The Discord bot's token. This supersedes any token stored in the database. This token will also not be committed to the database, so omitting this afterwards will use the previously stored token or prompt for a new token.

[!NOTE] Environment variables defined in a .env file are currently not recognized by ministatus. You should set these using export ABC=123 on Linux, set ABC=123 on Windows, or another equivalent method.

License

This project is written under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ministatus-0.6.1.tar.gz (45.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ministatus-0.6.1-py3-none-any.whl (67.7 kB view details)

Uploaded Python 3

File details

Details for the file ministatus-0.6.1.tar.gz.

File metadata

  • Download URL: ministatus-0.6.1.tar.gz
  • Upload date:
  • Size: 45.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ministatus-0.6.1.tar.gz
Algorithm Hash digest
SHA256 11eb0cd92c515e9b40f3a96127dbb24b6437c8f7dfcb024dae4c845c96ba113b
MD5 88ccbb1341edd4099605e0d794430e68
BLAKE2b-256 7ae056d533bc1580aec0db0121cc772830325222ed021244312c2468e4d40377

See more details on using hashes here.

Provenance

The following attestation bundles were made for ministatus-0.6.1.tar.gz:

Publisher: publish.yml on thegamecracks/ministatus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ministatus-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: ministatus-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 67.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ministatus-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 28bebcfda194b01128cfb617e868a5e36094a91fc416f79c234b140d37377a66
MD5 570c0582fd7908554e302644cda1a316
BLAKE2b-256 cbd17af2b92c8163a55dfe00744ef70c076fd790ef066992780aa716cf674c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for ministatus-0.6.1-py3-none-any.whl:

Publisher: publish.yml on thegamecracks/ministatus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page