Github GitHub - pcarn/vaccine-watch: Bot to notify when vaccine appointments are...
source link: https://github.com/pcarn/vaccine-watch
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Vaccine Watch
Bot to notify when vaccine appointments are available.
Supports checking Hy-Vee, Cosentino's stores (KC), Ball's stores (KC), Rapid Test KC, and locations checked by VaccineSpotter (including Walmart, Walgreens, CVS, Costco). 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.
Example
Slack
Setup
- Install docker
- Run
cp .env.template .env
- Fill in the variables in
.env
docker-compose up --build
Slack
- While logged into your slack account, go to https://api.slack.com/apps/
- Click
Create New App
- Choose a name and workspace
- Click
Permissions
, andAdd an OAuth Scope
- Add
chat:write:public
andchat:write
- At the top, click
Install to Workspace
- Copy your OAuth Token to use as
SLACK_BOT_TOKEN
Discord
- Click the cog on the channel you want to add the notifications to and select
Edit Channel
- Select the
Integrations
tab and clickCreate Webhook
- Enter a
Name
andChannel
you want the webhook to notify and copy the Webhook URL.
Microsoft Teams
- In the channel where you want to add the incoming webhook, click ... and then Connectors.
- Search for Incoming Webhook and click Add.
- Give the webhook a name (e.g. Vaccine Watch).
- Click Create.
- A unique webhook URL will be provided for the channel.
- Apply for a Twitter Developer account
- Once you have the account, go to the Developer Portal
- Create a project and an app for your bot
- Add
Read & Write
permissions to your app - In
Keys & Tokens
, generate Consumer Keys and Access Token/Secret to use as environment variables
Twilio
- Sign up for a Twilio account
- Once you have the account, go to the Console Dashboard of your Twilio account console
- Navigate to the
Phone Numbers
page in your Twilio account console, then clickGetting Started
- Select
Get your first Twilio phone number
and follow the prompts to procure a Twilio phone number - Verify any recipient phone numbers you will be notifying under
Phone Numbers
then Verified Caller IDs (only required for a trial account) - Copy your Twilio Account SID, Auth Token, Twilio phone number, and verified phone numbers to your
.env
file
- Install pre-commit
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 serviceVACCINE_CHECK_INTERVAL
: How often (in seconds) to checkRADIUS
: Within how many miles to checkLATITUDE
: 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_BALLS
: If you want to check stores in the Ball's family (Kansas City only)ENABLE_COSENTINOS
: If you want to check stores in the Cosentino's family (Kansas City only)ENABLE_HYVEE
: If you want to check Hy-Vee pharmaciesENABLE_VACCINE_SPOTTER
: If you want to check locations checked by VaccineSpotter (Excluding Hy-Vee)ENABLE_RAPID_TEST_KC
: Iff you want to check Rapid Test KC (Kansas City only)- Slack:
SLACK_BOT_TOKEN
: Token for your slack integrationSLACK_TAG_CHANNEL
: If the channel should be tagged when appointments are availableSLACK_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
- example:
- Microsoft Teams:
TEAMS_WEBHOOK_URL
: Teams webhook url for channel.- example:
https://company.webhook.office.com/webhookb2/abc123@def456/IncomingWebhook/aaa111/bbb222
- example:
- Twilio:
TWILIO_ACCOUNT_SID
: Account SID for your twilio accountTWILIO_AUTH_TOKEN
: Auth token for your twilio accountTWILIO_FROM_NUMBER
: Twilio phone number with SMS functionality in[+][country code][phone number including area code]
formatTWILIO_TO_NUMBERS
: Phone numbers to notify as an array of the following format[+][country code][phone number including area code]
- example:
["+15551234567", "+15552345678"]
- example:
- 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
.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK