A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. π
The main goals of this repo:
- create a (simple, but capable) service/bot to monitor game servers
- get gamedig & steam api server info (eg.: server name, map, players, etc.)
- relay real time server information to various channels via APIs (eg.: discord, telegram, slack etc.)
- should be able to host on a free service (target atm. is fly.io (node.js 20))
- graciously add more features based on community feedback via discord and github
The code itself is stable and continuously tested/deployed from the master branch.
The project is in a mature stage. New customization options and features are added as requested.
optional player list- customizable fields (time, name, ping, score)
- configurable field & order to sort by
- max length for player names & nr of players
optional graph chart- custom embed fields for discord/slack
configurable time zone offset for graph x-axis- refresh on reaction
- watched players (notify when a watched player enters/leaves the server)
- detect when the server goes offline, notify when player number crosses a threshold
- bot commands (reinit message, cleanup, start/stop, post server status, configure)
- more integrations:
telegram,slack, ms teams, twillio (email, sms) web ui to manage & configure the servers and bots- put custom information in the channel name or bot status (online status indicator, number of players, map)
- github action workflows to deploy to other cloud providers (aws, linode, atlantic, vultr, pikapods, okteto, ibm cloud etc.)
- SQL, JSON or object store database support (postgres, redis etc.)
- run as stateless serverless function (aws lambda, azure function, heroku, vercel, fly.io machines etc.)
pterodactyl egg release
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
node.js (version 16.20.0 or later)
This project is hosted on github. You can clone this project directly using this command:
git clone git@github.com:a-sync/game-server-watcher.git
The latest source can also be downloaded as a zip archive.
Use npm or yarn to install/update all the dependencies:
npm i
Build the artifacts from source:
npm run build
Start the built artifacts:
npm start
Build, start and auto restart on source changes:
npm run dev
The behaviour of the watcher service can be configured via environmental variables (env vars).
.env
(dotenv) file is also supported, to look at the available values and defaults check the .env.example file.
To get started, you can simply rename the .env.example
file to .env
.
Refer to the wiki on how to acquire tokens for:
GSW Control Panel is a web based UI that let's you configure and control the Game Server Watcher instance.
The web app is served at http://localhost:8080
by default.
Make sure to configure the SECRET
env var!
Updates the configuration file and restarts the service.
Removes population history data. (configured by Graph history time span server option)
If the original message created by the bot gets deleted, you might need to flush the bot data to reinitialize the message.
The bot has no cleanup functionality, leftover messages must be removed manually.
If the original message created by the bot gets deleted, you need to flush the bot data to reinitialize the message.
The bot has no cleanup functionality, leftover messages must be removed manually.
If the original message created by the bot gets deleted, you need to flush the bot data to reinitialize the message.
The bot has no cleanup functionality, leftover messages must be removed manually.
Check the wiki page for detailed instructions on how to setup a self deploying free cloud instance at fly.io.
The latest Pterodactyl egg can always be found here: π₯
Pre-built container images can be downloaded from the github container registry: docker pull ghcr.io/a-sync/game-server-watcher
Make sure to configure the environment variables in docker-compose.yml.
docker-compose up
Make sure all the requirements are met!
npm i
npm run build
Copy the ./package.json
file and the ./public/
and ./dist/
folders and their contents to your deployment folder.
Navigate to the deployment folder and execute the following command:
npm i --only=prod
If you can not install dependencies on the host, do a local install and copy the ./node_modules/
folder to the host.
Create environmental variables to enable the required features and to customize the service.
- Make sure the service can write to the data storage path. (configured by
DATA_PATH
env var, default:./data/
) - Make sure you create a unique admin secret. (configured by
SECRET
env var, default:secret
)
Run the program from the deployment folder:
node ./dist/server.js
- gamedig supported games list
- steamDB
- steam web API documentation
- discord API v10 documentation
- telegram API documentation
- slack API documentation
- json-editor documentation
- bootstrap 4 reference
- mustache documentation
- pterodactyl documentation
Public contributions are welcome!
You can create a new issue for bugs, or feel free to open a pull request for any and all your changes or work-in-progress features.
This project is licensed under the AGPL License by default for public use. Businesses or organizations seeking a commercial license, please contact gsw@devs.space.
Check the list of contributors who participated in this project.
This project was inspired by (the sudden disappearance of) "Game Status#5371" bot and its creator Ramzi Saheb on discord.
GSW icon stolen from Marvelβs Voices: Indigenous Voices #1 "The Watcher" by Jeffrey Veregge.
Backgrounds stolen from purple nebulas by Screaming Brain Studios and imgur.
All other libraries and dependencies are listed in the package.json file (dependencies/devDependencies section) and the index.html file (head section).
- https://github.com/soulkobk/DiscordBot_GameStatus
- https://github.com/Douile/discord-gamestatus
- https://github.com/Ramzi-Sah/game-status-discordbot
- https://github.com/Ramzi-Sah/game-status-discordbot-selfhosted
- https://github.com/msniveau/discord-statusbot
- https://github.com/kevinkjt2000/bowser
- https://github.com/negrifelipe/ServerStatusBot
- https://gitlab.com/lxndr/gswatcher
- https://github.com/Unity-Technologies/qstat
- https://github.com/GiyoMoon/steam-server-query
- https://github.com/Fabricio-191/valve-server-query
- https://github.com/sbuggay/srcds-info-proxy
- https://github.com/DiscordGSM/DiscordGSM
- https://github.com/EndBug/game-tracker
- https://github.com/fasko-web/discord-gameserver-bots
- https://github.com/FlorianSW/discord-player-count-bot
- https://github.com/Destarianon/FawxGameDigBot
- https://github.com/patriksh/gameserver-bot