Skip to content
/ vnb Public

Async Telegram bot to monitor CoWin API for available vaccination slots written in Rust

License

Notifications You must be signed in to change notification settings

obviyus/vnb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vnb CI Lines of code

Async Telegram bot written in Rust to monitor CoWin API for available vaccination slots.

You can find one instance of this bot running at @COVID_Vaccine_Updates

Highlights

  • Exponential backoff to gradually find a stable API query rate
  • teloxide framework using async
  • Strongly typed commands and JSON decoding

Setting up your environment

  1. Download Rust.
  2. Create a new bot using @Botfather to get a token in the format 123456789:abcdefgh.
  3. Initialise the TELOXIDE_TOKEN, CHANNEL_ID and OWNER_ID (optional) environmental variables to your tokens and IDs. You can find your CHANNEL_ID and OWNER_ID using @userinfobot
$ export TELOXIDE_TOKEN=<Your token here>
$ export CHANNEL_ID=<Your channel_id here>
$ export OWNER_ID=<Your owner_id here>
...
  1. Make sure that your Rust compiler is up to date:
$ rustup update stable
$ rustup override set stable
  1. Clone this repository and run:
$ git clone git@github.com:obviyus/vnb
$ cd vnb
$ cargo run

Adding or Removing new Districts

  • Get your state ID from: https://cdn-api.co-vin.in/api/v2/admin/location/states
  • Get your district ID from: https://cdn-api.co-vin.in/api/v2/admin/location/districts/<STATE_ID>
  • Open src/response.rs in any text editor and change the MONITORED_DISTRICTS constant to your liking.

TODO

  • Streamline deployment using Docker
  • Reduce binary size (current: 9.8MB)

Contributing

Pull requests welcome!

About

Async Telegram bot to monitor CoWin API for available vaccination slots written in Rust

Topics

Resources

License

Stars

Watchers

Forks

Languages