Files
tg_update_currency/README.md
T

85 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.
В лог не пишутся токены, только время, значения и ошибки.