85 lines
3.5 KiB
Markdown
85 lines
3.5 KiB
Markdown
# 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`.
|
||
В лог не пишутся токены, только время, значения и ошибки.
|