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
Send song lyrics to iMessage users using the Genius lyrics API

pyMessage Send song lyrics to iMessage users using the Genius lyrics API. Setup 1.) Open the main.py file, and add your API key on line 7. 2.) Install

therealkingnull 1 Jan 23, 2022
Aula-API - a school system widely used in Denmark, as you can see and read about in the python file

Information : Hello, thank you for reading this first of all. This is a Aula-API

Binary.club 2 May 28, 2022
a discord bot that pulls the latest or most relevant research papers from arxiv.org

AI arxiver a discord bot that pulls the latest or most relevant research papers from arxiv.org invite link : Arxiver bot link works in progress Usage

Ensias AI 14 Sep 03, 2022
A GUI Application that creates a Spotify Playlist from any year in the past, by just entering your preferred date

A GUI Application that creates a Spotify Playlist from any year in the past, by just entering your preferred date

David .K. Danso 1 Jan 17, 2022
DeKrypt 24 Sep 21, 2022
Code for "Multimodal Trajectory Prediction Conditioned on Lane-Graph Traversals," CoRL 2021.

Multimodal Trajectory Prediction Conditioned on Lane-Graph Traversals This repository contains code for "Multimodal trajectory prediction conditioned

Nachiket Deo 113 Dec 28, 2022
Discord feeder for AIL

ail-feeder-discord Discord feeder for AIL Warning! Automating user accounts is technically against TOS, so use at your own risk! Discord API https://d

ail project 6 Mar 09, 2022
Py hec token mgr - Create HEC tokens in Cribl Stream through the API

Add HEC tokens via API calls This script is intended as an example of how to aut

Jon Rust 3 Mar 04, 2022
Another secured and Yet Fastest telegram userbot

Vision-UserBot A stable, simple Telegram UserBot in Pyrogram! Support Variables ➨ TG_APP_ID - Your Telegram Api id. ➨ TG_API_HASH - Your Telegram Api

TeamVision 40 Oct 24, 2022
A telegram bot help you to get stylish fonts and text

Stylish Font Bot 🐿 This is a telegram bot help you to get stylish fonts and text. Config Vars 🤖 API_HASH: Get this value from my.telegram.org. API_K

MSTL updates 1 Nov 08, 2021
An async-ready Python wrapper around FerrisChat's API.

FerrisWheel An async-ready Python wrapper around FerrisChat's API. Installation Instructions Linux: $ python3.9 -m pip install -U ferriswheel Python 3

FerrisChat 8 Feb 08, 2022
First Party data integration solution built for marketing teams to enable audience and conversion onboarding into Google Marketing products (Google Ads, Campaign Manager, Google Analytics).

Megalista Sample integration code for onboarding offline/CRM data from BigQuery as custom audiences or offline conversions in Google Ads, Google Analy

Google 76 Dec 29, 2022
A python tool to Automate Whatsapp through Whatsapp web

This python tool is used to Automate Whatsapp through Whatsapp web. We can add number of contacts whom we want to send text messages on perticular time

5 Jul 21, 2022
Estudo de como criar uma api para o gerenciamento de livros usando a django restframework

Boa parte do projeto foi beaseado nesse vídeo e nesse artigo. Se assim como eu, você entrou agora no mundo BackEnd, recomendo fortemente tais materiai

Michel Ledig 14 Jun 28, 2022
A Simple Telegram Inline Torrent Search Bot by @infotechIT

Torrent-Search-RoBot A Simple Telegram Inline Torrent Search Bot by @infotechIT. Torrent API Using api.infotech.wtf API Host Bot Deploy to Heroku Clic

InfoTech 0 May 05, 2022
Reverse engineering multi-device WhatsApp Web.

whatsapp-web-multi-device-reveng In this repository, the research for reverse engineering multi-device WhatsApp Web takes place, see here for a descri

84 Jan 01, 2023
A python based all-in-one tool for Google Drive

gdrive-tools A python based all-in-one tool for Google Drive Uses For Gdrive-Tools ✓ generate SA ✓ Add the SA and Add them to TD automatically ✓ Gener

XcodersHub 32 Feb 09, 2022
um simples script para localizar IP

um simples script para localizar IP pkg install git (apt-get install git) pkg install python (apt-get install python) git clone https://github.com/byd

bydeathlxncer 4 Nov 29, 2021
A Discord bot to scrape textfiles from messages and put them to Hastebin

A Discord bot to scrape textfiles from messages and put them to Hastebin. Intended to use on support servers to help users read textfiles on mobile.

1 Jan 23, 2022
Tracker to check the covid shot slot availability in India and send mobile alerts via Twilio Messaging Service.

Cowin-Slot-Tracker Tracker to check the covid vaccine slot availability in India and send mobile notifications through Twilio Messaging Service. Requi

invalid username 27 Nov 12, 2022