/vnb

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

Primary LanguageRustMIT LicenseMIT

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!