Simple to install and configure bot for controlling your game servers from any messaging platform.
Project description
nidibot
Description
nidibot is a simple to install and configure bot for controlling your game servers from any messaging platform. Any is a bit of exaggeration here, since only Discord and Telegram is supported.
nidibot name was derived from Nitrado, Discord and bot - game server provider and messaging platform for which this bot was written originally.
It seems that only Nitrado has a good API for developers available. Any other game server provider does not provide (pun intended) any API at all. Some of them provide possibility of managing game server with remote console (RCON) though. RCON support would be a great addition to this project (someday).
Any contributions, bug reports and pull requests are welcome!
Features
- A minimalistic set of fundamental commands - everything you need to run and manage your game server.
- Possibility of connecting unlimited (somewhat) amount of game server providers and bots.
- High extensibility for game server providers and bots - just add a new class for missing game server provider or bot and make a PR.
- Easy setup - install ready-made nidibot package from PyPI and call
initialize_folder()
. - Simple configuration - everything is located in
bot_configuration.json
file in bot folder. Please see configuration description below for more details.
Limitations
- Command
/backup_restore
shows only latest 25 backups in Discord bot. This is coming from Discord limitation, it can show only 25 buttons in total (5 rows with 5 buttons each). - Telegram bot can not notify about game server status changes if 'allowed_channels' is empty. This is coming from Telegram API limitation.
Commands
nidibot supports following commands:
/status [OPTIONAL:name]
Provides extended status information about game server.
/start [OPTIONAL:name]
Starts server if it is offline, restarts server if it is online.
/stop [OPTIONAL:name]
Stops server if it is online.
/restart [OPTIONAL:name]
Restarts server if it is online, starts server if it is offline.
/backup_create [OPTIONAL:name]
Creates backup of games server files. Backed up files are stored in the working folder of bot under backups folder.
/backup_list [OPTIONAL:name]
Lists available backups of specific game server.
/backup_restore [OPTIONAL:name] [REQUIRED:backup_name]
Restores specific backup on a game server.
Each command supports optional argument name. It is a convenience argument in case you have multiple game servers connected to the bot at once. In case if no name is specified, the command is applied to the first game server in the list.
Quick start
Prerequisites
You need to have following before you proceed with the instructions:
- Virtual machine (VM) or server somewhere in the Internet.
- Bot account (Discord or Telegram one).
- Any Discord server or Telegram channel where you have administrative access.
- Nitrado account (register or login at https://server.nitrado.net/en-GB/).
- Any game server that runs on Nitrado to which you have administrative access.
Installation
- Login to your VM or server via SSH.
- Install Python 3.x. Do this only if Python 3.x is missing or very old. You don't need to have latest Python version for this bot.
- Install this bot as Python package via pip:
pip install nidibot
- Or upgrade already installed bot:
pip install nidibot --upgrade
Configuration
- Login to your VM or server via SSH.
- Create new folder for storing bot files.
- Proceed to the folder.
- Call following command for initializing bot in this folder and create default configuration files:
# Ubuntu/Linux only.
python3 -c 'from nidibot import Nidibot; Nidibot.initialize_folder()'
- Open bot_configuration.json file in any text editor and modify required values to your own:
{
"general": {
"backups_folder_path": "backups",
"logs_folder_path": "logs"
},
"bots": [
{
"type": "discord",
"token": "your-bot-token",
"privileged_users": [],
"allowed_channels": [],
"notify_polling_seconds": 5
}
],
"server_providers": [
{
"type": "nitrado",
"token": "your-gameserver-api-token",
"timeout_seconds": 10,
"polling_seconds": 5,
"notifications": {
"on_new_server": true,
"on_status_change": true,
"on_address_change": true,
"on_version_change": true,
"on_update_available_change": true
}
}
]
}
- Install nidibot service, so it will start automatically every system restart.
# Ubuntu/Linux only.
sudo cp nidibot.service /etc/systemd/system/nidibot.service && sudo systemctl daemon-reload && sudo systemctl enable nidibot.service
- Start newly installed service:
# Ubuntu/Linux only.
sudo systemctl start nidibot.service
- Check service status:
# Ubuntu/Linux only.
sudo systemctl status nidibot.service
Configuration description
The top level of configuration contains:
Group | Description |
---|---|
general |
General parameters of nidibot configuration. |
bots |
List of structures describing bot configuration parameters. |
server_providers |
List of structures describing game server configuration parameters. |
General
Parameter | Description |
---|---|
backups_folder_path |
The directory path in which all backups will be stored. Can be both relative or absolute. Default: "backups", relative to bot working directory. |
logs_folder_path |
The directory path in which logs will be stored. Can be both relative or absolute. Default: "logs", relative to bot working directory |
Bot configuration
Parameter | Description |
---|---|
type |
The type of the bot. Allowed values: discord , telegram . Default: empty. |
token |
The authentication token required for the bot. Default: empty. |
privileged_users |
The list of privileged users that can call administrative commands. Default: empty. |
allowed_channels |
The list of allowed channels from where commands will be accepted and processed. Default: empty. |
notify_polling_seconds |
The period in seconds for forwarding messages from queue to connected channels. Default: 5. |
Server provider configuration
Parameter | Description |
---|---|
type |
The type of the server provider. Allowed values: nitrado . Default: "". |
token |
The authentication token required for the server provider. Default: "". |
timeout_seconds |
The timeout in seconds for getting a response from the server provider. Default: 10. |
polling_seconds |
The period in seconds for polling a status from the server provider. Default: 5. |
notifications / on_new_server |
Toggles notification on a new game server appearing. Default: false. |
notifications / on_status_change |
Toggles notification on a game server status change. Default: false. |
notifications / on_address_change |
Toggles notification on a game server IP address change. Default: false. |
notifications / on_version_change |
Toggles notification on a game server version change. Default: false. |
notifications / on_update_available_change |
Toggles notification if game server got an update available. Default: false. |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nidibot-1.2.1.tar.gz
.
File metadata
- Download URL: nidibot-1.2.1.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d981410ef07b4174bc5448b7b8302ffa69d1efdf90577bd44de1aa3c574360c |
|
MD5 | c7d84a3c2a7af991f041c691fe0aadb4 |
|
BLAKE2b-256 | 64b7514a25bb1c1b91c404be662ad87ec6667b9e4088302496753175bce7a262 |
File details
Details for the file nidibot-1.2.1-py2.py3-none-any.whl
.
File metadata
- Download URL: nidibot-1.2.1-py2.py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1a94144afb941de0041a5ef26147e3c1cb2542042c82158814b5c63599824dc |
|
MD5 | 16d8eb68bb50f1d589ad72c8fff93ff3 |
|
BLAKE2b-256 | 792efe7c48ed1a894e3714716769bae2b256ee1288992cc29f3af55186da2059 |