This is a Telegram bot, to send you a message every time the pollen threshold reaches above a certain level.
It uses the Met Office's pollen forecast
Message https://t.me/pollen_count_bot on Telegram to use.
Requirement | Version |
---|---|
Python | 3.11.1 |
pip install -r requirements.txt
python bot.py
python bot.py start
To obtain an access token for telegram, see help page, but in essence, talk to the BotFather.
The access token is used via an environment variable, or a .env
file, which is not tracked by git.
Also in the environment should be an "admin ID", where errors are sent via the error handler.
touch .env
TELEGRAM_BOT_ACCESS_TOKEN=...
ADMIN_USER_ID=...
To store each user's location, reminder preference, and reminder threshold, a persistent pickle file is used. This is not tracked by git. This uses the Persistence API from python-telegram-bot.
persistent_data = PicklePersistence(filepath="bot_data.pickle")
application = Application.builder().token(API_KEY).persistence(persistent_data).build()
ssh alifeee@...
sudo apt-get update
sudo apt install python3.11-venv
sudo mkdir -p /usr/alifeee
sudo chown alifeee:alifeee /usr/alifeee
cd /usr/alifeee
git clone git@github.com:alifeee/pollen_bot.git
sudo adduser --system --no-create-home --group pollen_bot
# sudo cat /etc/group
# sudo cat /etc/passwd
# sudo -u pollen_bot whoami
python3 -m venv env
./env/bin/pip install -r requirements.txt
sudo chown -R alifeee:pollen_bot .
scp .env alifeee@...:~/python/pollen_bot/
sudo chown -R alifeee:pollen_bot .env
cp pollen_bot.service /etc/systemd/system/pollen_bot.service
sudo systemctl enable pollen_bot.service
sudo systemctl start pollen_bot.service
sudo systemctl status pollen_bot.service
runit
is a bit like systemd. See FAQ.
mkdir /home/alifeee/python/pollen_bot/logs
sudo mkdir /etc/sv/pollen_bot
sudo echo '#!/bin/sh
#cd /home/alifeee/python/pollen_bot & ./env/bin/python3 bot.py
# redirect stderr to stdout
exec 2>&1
# start program
exec /home/alifeee/python/pollen_bot/env/bin/python3 /home/alifeee/python/pollen_bot/bot.py
' > /etc/sv/pollen_bot/run
sudo mkdir /etc/sv/pollen_bot/log
sudo echo '#!/bin/sh
exec svlogd -tt /home/alifeee/python/pollen_bot/logs
' > /etc/sv/pollen_bot/log/run
sudo ln -s /etc/sv/pollen_bot /etc/service/
sudo sv start pollen_bot
sudo sv stop pollen_bot
sudo sv status pollen_bot
sudo sv restart pollen_bot
Log files are stored in the folder specified above, so for this script, they are in ~/python/pollen_bot/logs
.
ssh alifeee@...
cd ~/python/pollen_bot
git pull
sudo sv restart pollen_bot