Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

2 watching

Forks

Repository files navigation

Factorio Manager

Factorio manager server with Telegram bot as client

Run

python -m facmgr.client [OPTIONS]  # run the client
python -m facmgr.server [OPTIONS]  # run the server

To enable /update, start the server with a writable release directory:

python -m facmgr.server -E /path/to/factorio-managed-releases/current/bin/x64/factorio \
  -D /path/to/factorio-data \
  --update-dir /path/to/factorio-managed-releases

The updater stores releases under update-dir/releases and atomically switches update-dir/current/bin/x64/factorio. Package-managed deployments such as Nix store paths should keep updating Factorio through the package manager instead.

Project structure

Factorio Manager can be separate into 2 parts

  1. Factorio server + Manager server
  2. Manager client + Telegram bot server

Factorio server and Telegram bot server provide gaming and controlling functions to the end-users. Part 1. and 2. can be deployed on different machines or on the same machine.

Features

(items with * is WIP)

  1. server manager (daemon)
    1. server options
      1. start/stop/restart the server process, load with specified savefile, custom starting args
      2. log manager, in-game command
    2. savefile explorer (at least get name & play time from the saves, can be JSON/do not need to be human friendly)
    3. communication:
      1. grpc server
      2. authentication, ensure consistency
  2. middle layer: tg bot / server manager client
    1. connect to server manager
    2. connect to factorio with rcon (use custom grpc functions to support in-game command)
  3. tg bot frontend
    1. easy interface to set configurations
    2. basic function: switch saves. show save metadata to choose the correct one
    3. realtime chat and status with long polling / message forwarding
    4. run in-game commands (just transfer the raw command).
    5. process the response of the in-game commands (as string in lua? how to deal with it when an error occurs?)

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages