A Telegram bot for voting on questions with an ELO rating system, converted from Python to Go.
- Go 1.24.4 or later
- SQLite3 development libraries
To build all binaries at once:
go build -o bin/bot ./cmd/bot
go build -o bin/admin ./cmd/admin
go build -o bin/importer ./cmd/importer
go build -o bin/tournament_manager ./cmd/tournament_manager
The main Telegram bot application:
go build -o bin/bot ./cmd/bot
Administrative tools (currently in development):
go build -o bin/admin ./cmd/admin
Tool for importing questions from external sources:
go build -o bin/importer ./cmd/importer
Tool for managing tournaments:
go build -o bin/tournament_manager ./cmd/tournament_manager
Install dependencies:
go mod download
./bin/bot
./bin/admin
# List packages
./bin/importer -command=list-packages
# Import specific package
./bin/importer -command=import-package -package-id=5220
# Import all packages for a year
./bin/importer -command=import-year -year=2022
# List all tournaments
./bin/tournament_manager -command=list-tournaments
# Create a new tournament
./bin/tournament_manager -command=create-tournament -earliest-date=2023-01-01 -last-date=2023-12-31 -title="2023 Tournament"
# Activate a tournament by ID
./bin/tournament_manager -command=activate-tournament -id=1
# Deactivate a tournament by ID
./bin/tournament_manager -command=deactivate-tournament -id=1
For development, you can run directly with Go:
# Run bot
go run ./cmd/bot
# Run admin tool
go run ./cmd/admin
# Run importer
go run ./cmd/importer -command=list-packages
# Run tournament manager
go run ./cmd/tournament_manager -command=list-tournaments
To build for different platforms:
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o bin/bot-linux-amd64 ./cmd/bot
# Windows AMD64
GOOS=windows GOARCH=amd64 go build -o bin/bot-windows-amd64.exe ./cmd/bot
# macOS ARM64
GOOS=darwin GOARCH=arm64 go build -o bin/bot-darwin-arm64 ./cmd/bot