init: telegram currency bot with systemd timer
This commit is contained in:
@@ -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`.
|
||||
В лог не пишутся токены, только время, значения и ошибки.
|
||||
Reference in New Issue
Block a user