Skip to content

Notifications

github-actions[bot] edited this page Jul 1, 2026 · 2 revisions

Notifications

The miner supports 6 notification providers. Providers are configured in the notifications section of your account YAML. Credentials are injected via environment variables β€” never hardcode tokens in config files.

Provider setup

Telegram

  1. Create a bot via @BotFather and copy the token.
  2. Get your chat ID β€” send a message to the bot, then visit https://api.telegram.org/bot<TOKEN>/getUpdates and find chat.id.
  3. Set env vars:
    TELEGRAM_TOKEN=123456:ABC-DEF...
    TELEGRAM_CHAT_ID=987654321
  4. Enable in config:
    notifications:
      telegram:
        enabled: true
        events:
          - "BET_WIN"
          - "DROP_CLAIM"
          - "MINER_CRASHED"

Discord

  1. In your Discord server: Server Settings β†’ Integrations β†’ Webhooks β†’ New Webhook.
  2. Copy the webhook URL.
  3. Set env var:
    DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
  4. Enable in config:
    notifications:
      discord:
        enabled: true
        events:
          - "BET_WIN"
          - "DROP_CLAIM"

Webhook (generic)

Sends a POST or GET request to any URL when events fire. Useful for custom integrations.

WEBHOOK_URL=https://your-server.example.com/miner-events
notifications:
  webhook:
    enabled: true
    method: "POST"   # GET | POST
    events:
      - "BET_WIN"

Matrix

  1. Create an access token for your Matrix account.
  2. Find your room ID from the room settings.
  3. Set env vars:
    MATRIX_HOMESERVER=https://matrix.example.com
    MATRIX_ROOM_ID=!roomid:matrix.example.com
    MATRIX_ACCESS_TOKEN=syt_...

Pushover

  1. Register an application at pushover.net to get an API token.
  2. Copy your user key from the dashboard.
  3. Set env vars:
    PUSHOVER_TOKEN=your_app_token
    PUSHOVER_USER_KEY=your_user_key

Gotify

  1. Create an application in your Gotify instance and copy the token.
  2. Set env vars:
    GOTIFY_URL=https://gotify.example.com
    GOTIFY_TOKEN=your_app_token

Per-account vs global credentials

All notification env vars support two scopes. Per-account takes precedence; global is the fallback.

Global Per-account (suffix = uppercase username)
TELEGRAM_TOKEN TELEGRAM_TOKEN_GULIVEER_
TELEGRAM_CHAT_ID TELEGRAM_CHAT_ID_GULIVEER_
DISCORD_WEBHOOK DISCORD_WEBHOOK_GULIVEER_
WEBHOOK_URL WEBHOOK_URL_GULIVEER_
MATRIX_HOMESERVER MATRIX_HOMESERVER_GULIVEER_
MATRIX_ROOM_ID MATRIX_ROOM_ID_GULIVEER_
MATRIX_ACCESS_TOKEN MATRIX_ACCESS_TOKEN_GULIVEER_
PUSHOVER_TOKEN PUSHOVER_TOKEN_GULIVEER_
PUSHOVER_USER_KEY PUSHOVER_USER_KEY_GULIVEER_
GOTIFY_URL GOTIFY_URL_GULIVEER_
GOTIFY_TOKEN GOTIFY_TOKEN_GULIVEER_

Multiple accounts can share one global Telegram channel, or each have their own.


Event reference

Event Emoji Description
STREAMER_ONLINE 🟒 Streamer goes live
STREAMER_OFFLINE ⚫ Streamer goes offline
GAIN_FOR_RAID πŸ’΅ Points gained from a raid
GAIN_FOR_CLAIM πŸ’΅ Points gained from claiming a bonus
GAIN_FOR_WATCH πŸ’΅ Points gained from watching
GAIN_FOR_WATCH_STREAK πŸ’΅ Points gained from a watch streak
BET_WIN πŸ† Prediction bet won
BET_LOSE πŸ’Έ Prediction bet lost
BET_REFUND ↩️ Prediction bet refunded
BET_FILTERS 🎰 Prediction skipped by filter condition
BET_GENERAL 🎰 General prediction information
BET_FAILED 🎰 Prediction bet failed to place
BET_START 🎰 New prediction started
BONUS_CLAIM πŸ’΅ Bonus chest claimed
MOMENT_CLAIM πŸŽ‰ Community moment claimed
JOIN_RAID βš”οΈ Joined a raid
DROP_CLAIM πŸ“¦ Drop reward claimed
DROP_STATUS πŸ“¦ Drop campaign progress update
CHAT_MENTION πŸ’¬ Your account was mentioned in chat
GIFTED_SUB 🎁 Received a gifted subscription
MINER_STARTED πŸš€ Miner started (includes version)
MINER_STOPPED πŸ›‘ Miner stopped gracefully
MINER_CRASHED πŸ’₯ Miner crashed (includes error); miner auto-restarts with backoff
ACCOUNT_CONFIG_RELOADED πŸ”„ Config changed in DB or YAML file and miner was restarted
TEST β€” Test notification (via API endpoint)

If the events list is empty or omitted, all events are sent. Lifecycle events (MINER_STARTED, MINER_STOPPED, MINER_CRASHED, ACCOUNT_CONFIG_RELOADED) always bypass batching.


Notification batching

Batching groups notifications and delivers them as a single message at a configurable interval. Reduces notification noise for high-activity streams.

notifications:
  batch:
    enabled: true
    interval: 30m          # flush every 30 minutes
    max_entries: 15        # split into multiple messages if exceeded
    immediate_events:      # these bypass batching and send instantly
      - "BET_WIN"
      - "BET_LOSE"
      - "DROP_CLAIM"
      - "CHAT_MENTION"
      - "GIFTED_SUB"

Per-provider overrides:

  discord:
    enabled: true
    batch:
      interval: 15m        # Discord: flush every 15 minutes (overrides global)

  telegram:
    enabled: true
    batch:
      enabled: false       # Telegram: send every notification instantly

On graceful shutdown all pending batched events are flushed before the process exits.


Testing notifications

curl -X POST http://localhost:8080/api/test-notification

Sends a test event to all enabled providers, bypassing event filters. Check the response:

{ "status": "ok", "message": "Test notification sent to all enabled notifiers" }

A partial failure returns:

{ "status": "partial", "errors": ["telegram: 401 Unauthorized"] }

Clone this wiki locally