A simple IRC bot that I maintain for friends.
Features:
- Config file based setup with TOML
- Command system with various utilities (CVE lookup, unit conversion, airport info)
- Based on the great IRC package https://github.com/whyrusleeping/hellabot
- Automatic URL title extraction for links posted in channels
- User activity tracking with
!seencommand - Native RFC 1413 identd server
- Prometheus metrics endpoint for monitoring
- Automatic reconnection on connection loss
Configuration is done via TOML files (marmithon.toml for production, dev.toml for development).
Example configuration:
server = "irc.ircnet.com:6667"
nick = "Marmithon"
ssl = false
channels = ["#channel1", "#channel2"]
# Identd server configuration (RFC 1413)
identdEnabled = true
identdPort = "113"
identdUsername = "marmithon"
# Prometheus metrics server
metricsEnabled = true
metricsPort = "9090"
# Automatic reconnection
reconnectEnabled = true
reconnectDelaySeconds = 30
reconnectMaxAttempts = 0 # 0 = unlimitedWhen metrics are enabled, Marmithon exposes Prometheus-compatible metrics at http://localhost:9090/metrics:
marmithon_uptime_seconds- Bot uptimemarmithon_connected- Connection statusmarmithon_messages_received_total- Messages receivedmarmithon_messages_sent_total- Messages sentmarmithon_commands_executed_total- Commands executedmarmithon_reconnects_total- Reconnection attemptsmarmithon_channels- Number of joined channels
Health check available at http://localhost:9090/health
make build-local # Local build
make build # Docker build
go build # Direct Go build./marmithon -config marmithon.toml