butterrobot/README.md
2025-04-22 11:41:56 +02:00

95 lines
2.1 KiB
Markdown

# Butter Robot
![Status badge](https://woodpecker.local.fmartingr.dev/api/badges/5/status.svg)
Go framework to create bots for several platforms.
![Butter Robot](./assets/icon@120.png)
> What is my purpose?
## Features
- Support for multiple chat platforms (Slack (untested!), Telegram)
- Plugin system for easy extension
- Admin interface for managing channels and plugins
- Message queue for asynchronous processing
## Documentation
[Go to documentation](./docs)
### Database Management
ButterRobot includes an automatic database migration system. Migrations are applied automatically when the application starts, ensuring your database schema is always up to date.
[Learn more about migrations](./docs/migrations.md)
## Installation
### From Source
```bash
# Clone the repository
git clone https://git.nakama.town/fmartingr/butterrobot.git
cd butterrobot
# Build the application
go build -o butterrobot ./cmd/butterrobot
```
### Containers
The `fmartingr/butterrobot/butterrobot` container image is published on Github packages:
```bash
docker pull docker.pkg.git.nakama.town/fmartingr/butterrobot/butterrobot:latest
docker run -d --name butterrobot -p 8080:8080 docker.pkg.git.nakama.town/fmartingr/butterrobot/butterrobot:latest
```
## Configuration
Configuration is done through environment variables:
- `DEBUG`: Set to "y" to enable debug mode
- `BUTTERROBOT_HOSTNAME`: Hostname for webhook URLs
- `LOG_LEVEL`: Logging level (DEBUG, INFO, WARN, ERROR)
- `SECRET_KEY`: Secret key for sessions and password hashing
- `DATABASE_PATH`: Path to SQLite database file
### Platform-specific configuration
#### Slack
- `SLACK_TOKEN`: Slack app access token
- `SLACK_BOT_OAUTH_ACCESS_TOKEN`: Slack bot OAuth access token
#### Telegram
- `TELEGRAM_TOKEN`: Telegram bot token
## Contributing
```bash
git clone git@github.com:fmartingr/butterrobot.git
cd butterrobot
go mod download
```
Create a `.env-local` file with the required environment variables:
```
SLACK_TOKEN=xxx
TELEGRAM_TOKEN=xxx
...
```
And then you can run it directly:
```bash
go run ./cmd/butterrobot/main.go
```
## License
GPL-2.0