init: telegram currency bot with systemd timer

This commit is contained in:
2026-07-01 16:47:54 +03:00
commit 11b93825d9
5 changed files with 304 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
# Telegram Пин-бот курса
Этот проект обновляет один закреплённый пост в Telegram-канале раз в час. В посте показываются:
- курс USD/RUB от ЦБ РФ
- курс BTC/USD от CoinGecko
- индекс страха/жадности от Alternative.me
## Установка
1. Установите Python 3.10+ на VPS.
2. Перейдите в папку проекта:
```bash
cd ~/Agents/tg_update_currency
```
3. Создайте виртуальное окружение:
```bash
python3 -m venv .venv
source .venv/bin/activate
```
4. Установите зависимости:
```bash
pip install -r requirements.txt
```
## Настройка .env
1. Получите токен у @BotFather:
- Запустите @BotFather в Telegram.
- Выберите /newbot и следуйте инструкциям.
- Скопируйте токен вида `123456:ABC-DEF...`.
2. Узнайте `CHAT_ID` канала:
- Добавьте бота в канал как администратора.
- Используйте `@getidsbot` или `@username_to_id_bot` в Telegram.
- Если канал имеет публичный username, можно указать `@your_channel_username`.
3. Узнайте `MESSAGE_ID` закреплённого сообщения:
- Вручную создайте и закрепите пост в канале.
- Если бот администратор, вызовите `https://api.telegram.org/bot<TOKEN>/getChat?chat_id=@your_channel_username`.
- В ответе найдите поле `pinned_message.message_id`.
- Либо получите ID предыдущим ботом, когда публиковали сообщение.
4. Создайте файл `.env` рядом с `.env.example` и заполните значения.
Пример `.env`:
```ini
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_CHAT_ID=@your_channel_username
TELEGRAM_MESSAGE_ID=123
```
## Запуск вручную
```bash
source .venv/bin/activate
python bot_update_pinned_post.py
```
Если всё настроено верно, бот отредактирует закреплённый пост.
## Настройка cron
1. Откройте редактор cron:
```bash
crontab -e
```
2. Добавьте задачу:
```cron
0 * * * * cd /Users/irondru/Yandex.Disk.localized/Agents/tg_update_currency && /Users/irondru/Yandex.Disk.localized/Agents/tg_update_currency/.venv/bin/python bot_update_pinned_post.py >> /Users/irondru/Yandex.Disk.localized/Agents/tg_update_currency/cron.log 2>&1
```
3. Сохраните и выйдите.
Проверить cron можно командой:
```bash
crontab -l
```
## Проверка
- Запустите скрипт вручную и проверьте, что закреплённый пост обновился.
- Если один из API недоступен, скрипт ничего не изменит и запишет ошибку в лог.
- Убедитесь, что бот добавлен в канал как администратор с правом редактировать сообщения.
## Логирование
По умолчанию лог записывается в `bot_update_pinned_post.log`.
В лог не пишутся токены, только время, значения и ошибки.