HamAlert Discord Bot

Monitor HamAlert telnet feeds and forward amateur radio spot notifications to Discord webhooks

SOTA Support POTA Support QRZ Integration Docker Ready
BOT HamAlert Today at 2:30 PM
🏔️ SOTA spotted: K1ABC (John) on 14.074 FT8 2 minutes ago
Summit: Mount Washington W1/NH-001

Features

Real-time Monitoring

Connects to HamAlert telnet feeds for instant spot notifications with automatic reconnection and exponential backoff.

SOTA & POTA Support

Special formatting for Summits on the Air and Parks on the Air with emoji indicators and enhanced information display.

QRZ Integration

Automatic callsign lookup with QRZ.com integration, combining operator first names with callsigns to create clickable links to QRZ pages.

Rate Limiting

Built-in Discord webhook rate limiting (30 messages/minute) to comply with API limits and prevent blocking.

Smart Caching

24-hour QRZ data caching with automatic cleanup to minimize API calls and improve response times.

Health Monitoring

Optional Uptime Kuma integration for service health monitoring and alerting when the bot goes offline.

Setup & Configuration

1

Clone Repository

git clone https://github.com/sonyccd/hamalert-discord.git
cd hamalert-discord
2

Install Dependencies

pip install -r requirements.txt
3

Configure Environment

# Required settings
export USERNAME="YOUR_HAMALERT_USERNAME"
export PASSWORD="YOUR_HAMALERT_PASSWORD"
export WEBHOOK_URL="YOUR_DISCORD_WEBHOOK_URL"

# Optional QRZ integration
export QRZ_USERNAME="YOUR_QRZ_USERNAME"
export QRZ_PASSWORD="YOUR_QRZ_PASSWORD"

# Optional monitoring
export UPTIMEKUMA_URL="YOUR_UPTIME_KUMA_PUSH_URL"
export HEARTBEAT_INTERVAL="300"
4

Run the Bot

python app.py

Configuration Options

Environment Variable Command Line Description Required
USERNAME --username HamAlert username
PASSWORD --password HamAlert password
WEBHOOK_URL --webhook Discord webhook URL
QRZ_USERNAME --qrz-username QRZ.com username for callsign lookups
QRZ_PASSWORD --qrz-password QRZ.com password
UPTIMEKUMA_URL --heartbeat-url Uptime Kuma push URL
HEARTBEAT_INTERVAL --heartbeat-interval Heartbeat interval in seconds (default: 300)
LOG_LEVEL --log-level Logging level: DEBUG, INFO, WARNING, ERROR (default: INFO)

Docker Deployment

Quick Start with Docker

Deploy the bot quickly using Docker with all dependencies included:

Build and Run

# Build the image
docker build -t hamalert-discord .

# Run with environment variables
docker run -e USERNAME=your_username \
           -e PASSWORD=your_password \
           -e WEBHOOK_URL=your_webhook_url \
           -e QRZ_USERNAME=your_qrz_username \
           -e QRZ_PASSWORD=your_qrz_password \
           -e LOG_LEVEL=INFO \
           hamalert-discord

Docker Compose

version: '3.8'
services:
  hamalert-discord:
    build: .
    environment:
      - USERNAME=${USERNAME}
      - PASSWORD=${PASSWORD}
      - WEBHOOK_URL=${WEBHOOK_URL}
      - QRZ_USERNAME=${QRZ_USERNAME}
      - QRZ_PASSWORD=${QRZ_PASSWORD}
      - UPTIMEKUMA_URL=${UPTIMEKUMA_URL}
      - LOG_LEVEL=${LOG_LEVEL:-INFO}
    restart: unless-stopped

Message Examples

SOTA Spot

🏔️ SOTA spotted: John W1ABC on 14.074 FT8 2 minutes ago
Summit: Mount Washington W1/NH-001

POTA Spot

🌳 POTA spotted: Sarah K4XYZ on 7.032 CW 5 minutes ago
Park: K-0123 Great Smoky Mountains National Park

Generic Spot

spotted: Mike VK2DEF on 21.074 FT8 1 minute ago

Architecture Overview

HamAlert Telnet
Python Bot
QRZ API
Discord Webhook