A chatbot with configurable plugins to use in Telegram channels
  • Go 84.1%
  • HTML 15%
  • Makefile 0.6%
  • Dockerfile 0.3%
Find a file
Felipe M. a11804b29c
All checks were successful
CI / goreleaser-lint (push) Successful in 10s
CI / format (push) Successful in 1m10s
CI / test (push) Successful in 2m15s
CI / lint (push) Successful in 3m16s
CI / build (push) Successful in 5m21s
Release / release (push) Successful in 5m38s
feat: add global plugin configuration with per-channel overrides
Plugins that require configuration (Twitter/Instagram expanders, Domain
Blocker) can now have an app-wide default that each channel inherits and
overrides only where needed.

- model: add GlobalPluginConfig and MergeConfig (blank channel value
  inherits the global value)
- migration: add global_plugin_config table (#5)
- db: GetGlobalPluginConfig, GetAllGlobalPluginConfigs, SetGlobalPluginConfig
- app: merge global + channel config per message
- admin: /admin/plugins/config/<id> global config page, shared
  buildPluginConfigFromForm helper and _fields.html partial; channel form
  shows inherited global value as placeholder
- docs: document global vs per-channel plugin configuration
2026-06-04 09:12:46 +02:00
.github/workflows ci: migrate from Woodpecker to Forgejo Actions and modernize build setup (#1) 2026-04-08 10:50:27 +02:00
assets What is my purpose? 2020-04-23 11:00:19 +02:00
cmd/butterrobot chore: make format 2025-04-22 18:10:24 +02:00
docs feat: add global plugin configuration with per-channel overrides 2026-06-04 09:12:46 +02:00
internal feat: add global plugin configuration with per-channel overrides 2026-06-04 09:12:46 +02:00
.env-example Added admin interface to manage channels and enabled plugins (#9) 2022-02-05 13:00:20 +01:00
.gitignore chore: ignore all test db files 2025-06-13 12:04:22 +02:00
.goreleaser.yml ci: migrate from Woodpecker to Forgejo Actions and modernize build setup (#1) 2026-04-08 10:50:27 +02:00
CLAUDE.md chore: try to ensure that code is checked after each session 2025-06-23 11:35:30 +02:00
Containerfile ci: migrate from Woodpecker to Forgejo Actions and modernize build setup (#1) 2026-04-08 10:50:27 +02:00
go.mod feat: added help command 2025-06-13 12:04:07 +02:00
go.sum fix: missing ca-certs 2025-04-21 17:12:29 +02:00
Makefile ci: migrate from Woodpecker to Forgejo Actions and modernize build setup (#1) 2026-04-08 10:50:27 +02:00
README.md docs: updated README 2025-04-22 11:41:56 +02:00

Butter Robot

Status badge

Go framework to create bots for several platforms.

Butter Robot

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

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

Installation

From Source

# 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:

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

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:

go run ./cmd/butterrobot/main.go

License

GPL-2.0