GoBot is an extensible Go IRC bot for long-running use on one or more IRC networks. It supports TLS/SASL authentication, multiple networks and channels, persistent plugin data, rate-limited responses, games, reminders, URL titles, and Prometheus metrics.
The repository contains example connection settings so you can see the configuration shape. Replace them with the networks, channels, identity, and secrets for your own deployment.
Each configured network connection:
- connects over TLS and can authenticate with SASL PLAIN
- joins any number of configured channels
- listens for channel, private, and invite events
- dispatches messages to enabled plugins
- reconnects with backoff after network failures
- paces outbound messages to avoid flooding
Stateful features store their data in a local BoltDB database. Runtime
counters are exposed through /stats and /metrics; cumulative counters
are also persisted so they survive restarts.
Requirements:
- Go
1.25.12+or a newer supported release - IRC network access
- a writable data directory
- Review
config.yamland add your networks and channels. - Copy
.env.exampleto.envand add secrets such as SASL or API keys. - Build the binary with
make buildor./scripts/build.sh. - Start it from the repository root with
./bin/irc-bot.
For a service-managed deployment, use the systemd and deployment guide. Docker and Docker Compose are also documented there.
| Guide | Covers |
|---|---|
| Deployment | Build, run, systemd, Docker, and first-run workflow |
| Configuration | Multi-network config, channels, invites, rate limits, and formatting |
| Plugins | Built-in plugin behavior and command reference |
| Games and activities | Blackjack, polls, reminders, Duck Hunt, dice, and choices |
| NickServ and SASL | Nickname registration and secure authentication |
| Banter and fortune | Optional banter, quotes, and curated fortune files |
| News | NewsAPI setup and commands |
| Monitoring | /stats, /metrics, Prometheus, and Grafana |
| Security | Deployment and runtime security guidance |
| Development and CI | Project workflow, tests, CI, CodeQL, and Dependabot |
cmd/irc-bot/ application entrypoint
bot/ IRC connection, config, queue, stats, and interfaces
plugins/ built-in plugins and tests
storage/ BoltDB wrapper used by stateful plugins
quotes/ built-in quote and response files
grafana/ importable Prometheus dashboard and preview
scripts/ build, publishing, and systemd helpers
deploy/systemd/ systemd unit template
The binary is generated at bin/irc-bot; it is a build artifact, not source
code. See Development and CI for local checks.
MIT