~goorzhel/sota-slack-spotter

SOTA spots for your radio club

5aa827a Explain deploying Nix-built image to Fly

2 months ago

2284e59 Specify 1 GB volume on Fly

2 months ago

#SOTA Slack Spotter

A Slack bot that notifies you when a member of your workspace has been spotted on Summits on the Air. It does this by scraping callsigns from the list of Slack users, fetching spot data from the SOTA API, and messaging a channel whenever a member's callsign appears in a spot.

An example on Slack, with a message reading "N6TNO spotted at W6/CC-063" and thread-replies such as "on 7.0375 MHz (CW) at 17:54:02Z by RBNHOLE ('RBNHOLE at W6YX 14 WPM 25 dB SNR')" (this earned a muscle-emoji reaction from a clubmate).

#Usage

#Environment

#Required
  • SLACK_BOT_TOKEN: Begins with xoxb.
  • SLACK_CHANNEL: The channel where the bot will post spots.
#Optional
  • CACHE_DIR: Where to store cached data. Defaults to /cache.
  • EXTRA_CALLSIGNS: Comma-separated list of callsigns to track in addition to those extracted from Slack.
  • RUST_LOG: Controls logging verbosity. Upstream default is error.

#Fly

SLACK_BOT_TOKEN=<...>
SLACK_CHANNEL=<...>
REGION=<...> # e.g.: sjc
RUST_LOG=info

flyctl apps create sota-slack-spotter
flyctl secrets set SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN SLACK_CHANNEL=$SLACK_CHANNEL RUST_LOG=$RUST_LOG
#Without Nix

flyctl deploy -r $REGION

#With Nix
nix build .#image
podman load < result
podman tag localhost/sota-slack-spotter:latest registry.fly.io/sota-slack-spotter:latest

flyctl auth token | podman login registry.fly.io -u x --password-stdin
podman push registry.fly.io/sota-slack-spotter:latest

flyctl deploy -r $REGION -i registry.fly.io/sota-slack-spotter:latest

#Docker

cat > .env <<EOF
SLACK_BOT_TOKEN=<...>
SLACK_CHANNEL=<...>
EOF
docker-compose up -d