Go Telegram Multibot
A scalable, multi-bot solution for Telegram using Go, GORM, and the Anthropic API.
Design Considerations
- AI-powered
- Supports multiple bot profiles
- Uses SQLite for persistence
- Implements rate limiting and user management
- Modular architecture
- Comprehensive unit tests
Usage
Docker Deployment (Recommended)
-
Clone the repository:
git clone https://github.com/HugeFrog24/go-telegram-bot.git cd go-telegram-bot -
Copy the default config template and edit it:
cp config/default.json config/mybot.json nano config/mybot.json
Important
Keep your config files secret and do not commit them to version control.
- Create data directory and run:
mkdir -p data docker-compose up -d
Native Deployment
-
Install using
go get:go get -u github.com/HugeFrog24/go-telegram-bot cd go-telegram-bot -
Configure as above, then build:
go build -o telegram-bot
Systemd Unit Setup
To enable the bot to start automatically on system boot and run in the background, set up a systemd unit.
-
Copy the systemd unit template and edit it:
sudo cp examples/systemd/telegram-bot.service /etc/systemd/system/telegram-bot.serviceEdit the service file:
sudo nano /etc/systemd/system/telegram-bot.serviceAdjust the following parameters:
- WorkingDirectory
- ExecStart
- User
-
Enable and start the service:
sudo systemctl daemon-reloadsudo systemctl enable telegram-botsudo systemctl start telegram-bot -
Check the status:
sudo systemctl status telegram-bot
For more details on the systemd setup, refer to the demo service file.
Logs
Docker
docker-compose logs -f telegram-bot
Systemd
journalctl -u telegram-bot -f
Testing
The GitHub actions workflow already runs tests on every commit:
However, you can run the tests locally using:
go test -race -v ./...
Storage
At the moment, a SQLite database (./data/bot.db) is used for persistent storage.
Remember to back it up regularly.
Future versions will support more robust storage backends.