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
CDBEC: Catware DataBase Encryption Client

CDBEC: Catware DataBase Encryption Client Описание CDBEC - клиент для создания, просмотра и редактирования .db-catencrypted списков, шифруемых при пом

Catware-Foundation 2 Nov 03, 2022
Attempting to create a framework for Discord Slash commands... yes

discord_slash.py Attempting to create a framework for Discord Slash commands... yes Installation pip install slashpy Documentation Coming soon™ Why is

AlexFlipnote 11 Mar 24, 2021
A Bot To Get Info Of Telegram messages , Media , Channel id Group ID etc.

Info-Bot A Bot To Get Info Of Telegram messages , Media , Channel id Group ID etc. Get Info Of Your And Messages , Channels , Groups ETC... How to mak

Vɪᴠᴇᴋ 23 Nov 12, 2022
Un bot leggero basato su py-cord facile da hostare sul cloud

GalbiBot Un bot leggero basato su py-cord facile da hostare sul cloud Guida installazione su una macchina Per far funzionare il bot devi aver installa

Galbaninoh 2 Oct 21, 2022
Running Performance Calculator

Running Performance Calculator 👉 Have you ever wondered if you ran 10km at 2000

Davide Liu 6 Oct 26, 2022
Easy-apply-bot - A LinkedIn Easy Apply bot to help with my job search.

easy-apply-bot A LinkedIn Easy Apply bot to help with my job search. Getting Started First, clone the repository somewhere onto your computer, or down

Matthew Alunni 5 Dec 09, 2022
Disqus API bindings for Python

disqus-python Let's start with installing the API: pip install disqus-python Use the API by instantiating it, and then calling the method through dott

DISQUS 163 Oct 14, 2022
Kali Kush - Account Nuker Tool

Kali Kush - Account Nuker Tool This is a discord tool made by me, and SSL :) antho#1731 How to use? pip3 install -r requirements.txt -py kalikush.py -

ryan 3 Dec 21, 2021
A small bot to interact with the reddit API. Get top viewers and update the sidebar widget.

LiveStream_Reddit_Bot Get top twitch and facebook stream viewers for a game and update the sidebar widget and old reddit sidebar to show your communit

Tristan Wise 1 Nov 21, 2021
Yes, it's true :purple_heart: This repository has 353 stars.

Yes, it's true! Inspired by a similar repository from @RealPeha, but implemented using a webhook on AWS Lambda and API Gateway, so it's serverless! If

510 Dec 28, 2022
Moon-TikTok-Checker - A TikTok Username checking tool that probably 3/4 people use to get rare usernames

Moon Checker (educational Purposes Only) What Is Moon Checker? This is a TikTok

glide 4 Nov 30, 2022
⚔️ Fastest tibia bot API

📝 Description tibia bot api using python ⌨ Development ⚙ Running the app python bot.py ✅ ROADMAP Add confidence to floor level to have more accuracy

Lucas Santos 133 Dec 28, 2022
Telegram bot to stream videos in telegram voicechat for both groups and channels.

Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live streams, YouTube videos and telegram media. With record stream support, Schedule streams, and many more

SOCIAL MECHANIC 4 Nov 13, 2022
Python client for the LightOn Muse API

lightonmuse Python bindings to production-ready intelligence primitives powered by state-of-the-art language models. Create. Process. Understand. Lear

LightOn 12 Apr 10, 2022
Create a Neo4J graph of users and roles trust policies within an AWS Organization.

AWS_ORG_MAPPER This tool uses sso-oidc to authenticate to the AWS organization. Once authenticated the tool will attempt to enumerate all users and ro

Ruse 24 Jul 28, 2022
Python script to Funge NFTs.

Python script to Funge NFTs. It scrapes OpenSea for a given list of NFT collections and downloads a certain number of NFTs from each collection or the entire collections.

3 Apr 28, 2022
Simple script to extract useful informations from the combo BloodHound + Neo4j

bloodhound-quickwin Simple script to extract useful informations from the combo BloodHound + Neo4j. Can help to choose a target. Prerequisites python3

140 Dec 21, 2022
WhatsApp Web API client with multi-device support

Tauros WhatsApp Web client for multi-device in python Free software: MIT Documentation: https://tauros.readthedocs.io Features TODO Credits This packa

Manjit Pardeshi 0 Jan 20, 2022
Ap lokit lokit

🎵 FANDA MUSIC BOT Fanda Music adalah proyek bot telegram yang memungkinkan Anda memutar musik di obrolan suara grup telegram. a href="https://www.py

Fatur 2 Nov 18, 2021
Weather App using openweathermap API

This is my hobby project used to learn how to use public api for project.In this i used the api of openweathermap to featch the weather details of various city across the globe by giving city name as

Subramanya K S 1 Nov 06, 2021