2022-05-08 21:11:24 +02:00
2022-03-31 17:14:09 +02:00
2022-05-08 20:45:46 +02:00
2022-05-08 20:45:46 +02:00
2022-05-01 20:13:27 +02:00
2022-03-31 17:14:09 +02:00
2022-05-08 21:11:24 +02:00
2022-04-06 23:38:37 +02:00
2022-05-08 20:21:55 +02:00
2022-04-06 19:31:20 +02:00
2022-04-06 19:31:20 +02:00

Game Server Watcher

A simple discord/telegram bot that can be hosted on a free service to monitor your game servers and players in style. 😎

Table of Contents

[SHOW / HIDE]
  1. About the Project
  2. Getting Started
    1. Requirements
    2. Getting the source
    3. Installation
    4. Usage
    5. Settings
    6. Managing the service
  3. Deployment
  4. How to Get Help
  5. Further Reading
  6. Contributing
  7. License
  8. Authors
  9. Acknowledgments
    1. Similar projects

About the Project

The main goals of this repo:

  1. create a (simple, but capable) service/bot to monitor game servers
    1. get gamedig & steam api server info (eg.: server name, map, players, etc.)
    2. relay real time server information to various channels via APIs (eg.: discord, telegram, slack etc.)
  2. should be able to host on a free service (target atm. is cloudno.de (nodejs 12.20.1))
  3. graciously add more features based on community feedback (discord / github)

Screenshots

[SHOW / HIDE]

Discord

discord

Telegram

telegram

Back to top

Project Status

The code itself is stable and continuously tested/deployed from the cloud branch.

The project is in a very early stage. More detailed customization options and additional features will be added as requested.

Possible features and configuration options to add in the future

  • optional player list
    • with configurable fields. eg.: time,name,ping,score
    • configurable field & order to sort by
    • max length for player names & nr of players
  • custom embed fields for discord
  • configurable timezone 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, configure)
  • more integrations: 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 (azure, aws, etc.)

Back to top

Getting Started

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.

Requirements

node.js (version 12.20.0 or later)

Getting the source

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 and build can also be downloaded as a zip archive.

Installation

Use npm or yarn to install/update all the dependencies:

npm i

If you don't want to build from source, you can skip the development dependencies:

npm i --only=prod

Usage

Start the built artifacts directly:

node ./dist/server.js

Build the source and start the service in one command:

npm start

Build, start and auto restart on source changes:

npm run dev

Settings

The behaviour of the watcher service can be configured via environmental variables (env vars).
.env (dotenv) file is also supported, to look at the avaialable values and defaults check the default.env file.

Refer to the wiki on how to get tokens for:

Managing the service

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 a proper SECRET env var to enable access!

Configuration

Updates the configuration file and restarts the service.

Flush servers data

Removes population history data. (configured by graphHistoryHours server option)

Flush discord data

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, left over messages must be removed manually.

Flush telegram data

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, left over messages must be removed manually.

Back to top

Deployment

Check the wiki page for detailed instructions on how to setup a self deploying free cloud instance at cloudno.de.

Hosting

Make sure all the requirements are met!
Protip: check the node.js version with node -v.

Build artifacts (optional)

npm i
npm run build

Minimum required files on host

Copy the ./package.json and ./index.html files and the ./dist/ folder to your deployment folder.

Install production dependencies on host

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.

Configuration

Create a writeable folder for the data storage. (configured by DATA_PATH env var, default: ./data/)

Running

Run the program from the deployment folder:

node ./dist/server.js

Back to top

How to Get Help

Back to top

Further Reading

Back to top

Contributing

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.

Back to top

License

This project is licensed under the AGPL License - see LICENSE file for details.

Back to top

Authors

Check the list of contributors who participated in this project.

Back to top

Acknowledgments

This project was inpired by (the sudden disappearance of) "Game Status#5371" bot and its creator Ramzi Saheb on discord.

IP regex stolen from the ip-regex package source.

GSW Control Panel icon stolen from imgur.

Backgrounds stolen from purple nebulas.

All other libraries and dependencies are listed in the package.json file (dependencies/devDependencies section) and the index.html file (head section).

Similar projects

Back to top

Description
No description provided
Readme 14 MiB
Languages
TypeScript 65.3%
JavaScript 20.2%
HTML 9.5%
CSS 4.5%
Dockerfile 0.5%