Bot to notify when vaccine appointments are available

Overview

Vaccine Watch

Bot to notify when vaccine appointments are available.

Supports checking Hy-Vee, Walgreens, CVS, Walmart, Cosentino's stores (KC), and Ball's stores (KC). Supports sending notifications to Slack, Discord, Microsoft Teams, Twilio, and Twitter.

Notifications are sent when a location has appointments. No more notifications are sent for that location until it becomes unavailable again.

PRs welcome to support other clinics or notification methods.

This project has no affiliation with any of the clinics mentioned.

Walmart and Walgreens data courtesy of covid-vaccine-spotter.

Example

Slack

Example of messages in Slack

Twitter

Example of messages in Twitter

Setup

  1. Install docker
  2. Run cp .env.template .env
  3. Fill in the variables in .env
  4. docker-compose up --build

Slack

  1. While logged into your slack account, go to https://api.slack.com/apps/
  2. Click Create New App
  3. Choose a name and workspace
  4. Click Permissions, and Add an OAuth Scope
  5. Add chat:write:public and chat:write
  6. At the top, click Install to Workspace
  7. Copy your OAuth Token to use as SLACK_BOT_TOKEN

Discord

  1. Click the cog on the channel you want to add the notifications to and select Edit Channel
  2. Select the Integrations tab and click Create Webhook
  3. Enter a Name and Channel you want the webhook to notify and copy the Webhook URL.

Microsoft Teams

  1. In the channel where you want to add the incoming webhook, click ... and then Connectors.
  2. Search for Incoming Webhook and click Add.
  3. Give the webhook a name (e.g. Vaccine Watch).
  4. Click Create.
  5. A unique webhook URL will be provided for the channel.

Twitter

  1. Apply for a Twitter Developer account
  2. Once you have the account, go to the Developer Portal
  3. Create a project and an app for your bot
  4. Add Read & Write permissions to your app
  5. In Keys & Tokens, generate Consumer Keys and Access Token/Secret to use as environment variables

Twilio

  1. Sign up for a Twilio account
  2. Once you have the account, go to the Console Dashboard of your Twilio account console
  3. Navigate to the Phone Numbers page in your Twilio account console, then click Getting Started
  4. Select Get your first Twilio phone number and follow the prompts to procure a Twilio phone number
  5. Verify any recipient phone numbers you will be notifying under Phone Numbers then Verified Caller IDs (only required for a trial account)
  6. Copy your Twilio Account SID, Auth Token, Twilio phone number, and verified phone numbers to your .env file

Lint

  1. Install pre-commit
  2. pre-commit install

Lint is run as a pre-commit, or on-demand with pre-commit run --all-files

Deployment Instructions

Required Environment Variables:

  • REDIS_URL: A redis service
  • VACCINE_CHECK_INTERVAL: How often (in seconds) to check
  • RADIUS: Within how many miles to check
    • CVS has a maximum of 25, vaccine-watch will use 25 for CVS if you set this higher.
  • LATITUDE: Latitude of the location to check (e.g. 39.1040382)
  • LONGITUDE: Latitude of the location to check (e.g. -94.5701803)
  • STATES: JSON: Abbreviations of which states are in radius of your location (e.g. ["MO", "KS"])

Optional Environment Variables:

  • REQUEST_TIMEOUT: How long to wait, in seconds, for a response to begin before timing out (optional, defaults to 5 seconds)
  • ENABLE_HYVEE: If you want to check Hy-Vee pharmacies
  • ENABLE_WALGREENS: If you want to check Walgreens pharmacies
  • ENABLE_WALMART: If you want to check Walmart pharmacies
  • ENABLE_COSENTINOS: If you want to check stores in the Cosentino's family (Kansas City only)
  • ENABLE_BALLS: If you want to check stores in the Ball's family (Kansas City only)
  • CVS:
    • ENABLE_CVS: If you want to check CVS pharmacies
    • CVS_ALLOW_LIST: JSON of states and cities to be notified for.
      • example: {"MO": ["SAINT LOUIS"], "KS": []}
    • CVS_BLOCK_LIST: (optional): JSON of states and cities to not be warned about new city for.
      • example: {"MO": ["SAINT LOUIS"], "KS": []}
    • Any city that CVS returns for the state(s) in STATES that are not listed in either the allow or block list will cause a warning message to be logged. Then it may be added to the allow or block list depending on if you wish to have the locations in that city checked or not checked.
  • Slack:
    • SLACK_BOT_TOKEN: Token for your slack integration
    • SLACK_TAG_CHANNEL: If the channel should be tagged when appointments are available
    • SLACK_CHANNEL: Channel for the bot to post in (e.g. #vaccine-watch)
  • Discord:
    • DISCORD_WEBHOOK_URL: Discord webhook url for channel.
      • example: https://discordapp.com/api/webhooks/1234567890/abc123
  • Microsoft Teams:
    • TEAMS_WEBHOOK_URL: Teams webhook url for channel.
      • example: https://company.webhook.office.com/webhookb2/[email protected]/IncomingWebhook/aaa111/bbb222
  • Twilio:
    • TWILIO_ACCOUNT_SID: Account SID for your twilio account
    • TWILIO_AUTH_TOKEN: Auth token for your twilio account
    • TWILIO_FROM_NUMBER: Twilio phone number with SMS functionality in [+][country code][phone number including area code] format
    • TWILIO_TO_NUMBERS: Phone numbers to notify as an array of the following format [+][country code][phone number including area code]
      • example: ["+15551234567", "+15552345678"]
  • Twitter:
    • TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN_KEY, TWITTER_ACCESS_TOKEN_SECRET
  • TIMEZONE: Timezone of your location (defaults to 'US/Central')
  • CACHE_PREFIX: If you want to run multiple copies of vaccine-watch, all sharing the same Redis database, you will want to give each instance a different CACHE_PREFIX.

Docker

You can build a docker image with the Dockerfile, and run it with a redis server.

Heroku

You can create an app in heroku, add a free redis plan, and push the source. Configure the dynos to enable clock.

Owner
Peter Carnesciali
Peter Carnesciali
Polars-fun - Example notebooks for how to use pola.rs

polars-fun Polars is an awesome Rust DataFrame library with Python language bindings. This repo makes it easy to run Polars code on your local machine

Matthew Powers 2 Jun 28, 2022
Leveraged grid-trading bot using CCXT/CCXT Pro library in FTX exchange.

Leveraged-grid-trading-bot The code is designed to perform infinity grid trading strategy in FTX exchange. The basic trader named Gridtrader.py contro

Hao-Liang Wen 25 Oct 07, 2021
Boto3 code assistance for any API in any IDE, always up to date

botostubs Gives you code assistance for any boto3 API in any IDE. Get started by running pip install botostubs Demo Features PyPI package automaticall

Jeshan Giovanni BABOOA 94 Nov 14, 2022
Terminal-Trade(Panel API) For Binance

Binance-Trade-Project Binance Futures Terminal-Trade(API) & Binance This Project Worth Around 500 Bucks. **I Did This Project For SomeOne And He

Cyber 9 Dec 30, 2021
The successor of GeoSnipe, a pythonic Minecraft username sniper based on AsyncIO.

OneSnipe The successor of GeoSnipe, a pythonic Minecraft username sniper based on AsyncIO. Documentation View Documentation Features • Mojang & Micros

1 Jan 14, 2022
SQS + Lambda를 활용한 문자 메시지 및 이메일, Voice call 호출을 간단하게 구현하는 serverless 템플릿

AWS SQS With Lambda notification 서버 구축을 위한 Poc TODO serverless를 통해 sqs 관련 리소스(람다, sqs) 배포 가능한 템플릿 작성 및 배포 poc차원에서 간단한 rest api 호출을 통한 sqs fifo 큐에 메시지

김세환 4 Aug 08, 2021
Mventory is an API-driven solution for Makerspaces, Tinkerers, and Hackers.

Mventory is an API-driven inventory solution for Makers, Makerspaces, Hackspaces, and just about anyone else who needs to keep track of "stuff".

Make Monmouth 107 Dec 21, 2022
An attempt to escape the horrible JIRA editor.

An attempt to escape the horrible JIRA editor. jira_filter.py is a pandoc filter that cleans up some of JIRA's html so that it can be converted to Mar

Stefan Matting 2 Feb 10, 2022
Userbot Telegram + Music Voice Chats. Dibuat Untuk Bersenang - Senang , Dan Mempermudah Kegiatan. Created By Rio.

RIO - USERBOT Disclaimer Saya tidak bertanggung jawab atas penyalahgunaan bot ini. Bot ini dimaksudkan untuk bersenang-senang sekaligus membantu Anda

RioProjectX 1 Nov 10, 2021
🎄 JustaGrabber - A discord token grabber written in python3

🎄 JustaGrabber - A discord token grabber written in python3 🎇 Made by kldiscord https://github.com/kldiscord 🌟 Please leave a star if you liked Jus

1 Dec 19, 2022
Buy early bsc gems with custom gas fee, slippage, amount. Auto approve token after buy

Buy early bsc gems with custom gas fee, slippage, amount. Auto approve token after buy. Sell buyed token with custom gas fee, slippage, amount. And more.

Jesus Crypto 206 May 01, 2022
A simple object model for the Notion SDK.

A simplified object model for the Notion SDK. This is loosely modeled after concepts found in SQLAlchemy.

Jason Heddings 54 Jan 02, 2023
Tiktok BOT 1 link Vidio otomatis : - Nambah view - Nambah love - Nambah share - Nambah love komen (semua komen ke love)

Install Bahannya pip install selenium pip install pyfiglet==0.7.5 Cara Install dan Menjalankannya Git-clone this repo! Install selenium and pyfiglet u

Ahmad Ghozali 1 Mar 01, 2022
Snipe fair coin launches. Contact @dannsniper on telegram for whitelist

Pancakeswap-sniper Pancakeswap Sniper bot Full version of Pancakeswap sniping bot used to snipe during fair coin launches. With advanced options and a

36 Nov 01, 2021
Widevine MPD Content Downloader & Decryptor

Widevine-DL Encrypted MPD Manifest Content Downloader + Decryptor (not a Widevine Key Extractor!) Requirements ffmpeg, yt-dlp, aria2, widevine-l3-decr

Vank0n (SJJeon) 170 Dec 30, 2022
A simple Python wrapper for the archive.is capturing service

archiveis A simple Python wrapper for the archive.is capturing service. Installation pipenv install archiveis Python Usage Import it. import archi

Ben Welsh 157 Dec 28, 2022
Prabashwara's Pm Bot repository. You can deploy and edit this repository.

Tᴇʟᴇɢʀᴀᴍ Pᴍ Bᴏᴛ | Prabashwara's PM Bot Unmaintained. The new repo of @Pm-Bot is private. (It is no longer based on this source code. The completely re

Rivibibu Prabshwara Ⓒ 2 Jul 05, 2022
A discord bot consuming Notion API to add, retrieve data to Notion databases.

Notion-DiscordBot A discord bot consuming Notion API to add and retrieve data from Notion databases. Instructions to use the bot: Pre-Requisites: a)In

Servatom 57 Dec 29, 2022
Automate coin farming for dankmemer. Unlimited accounts at once. Uses a proxy

dankmemer-farm Simple script to farm Dankmemer coins with multiple accounts at once. Requires: Proxies, Discord Tokens Disclaimer I don't take respons

Scobra 12 Dec 20, 2022
Example code for interacting with solana anchor programs - candymachine

candypy example code for interacting with solana anchor programs - candymachine THIS IS PURELY SAMPLE CODE TO FORK, MODIFY, UNDERSTAND AND INTERACT WI

dubbelosix 3 Sep 18, 2022