Telegram Пин-бот курса

Этот проект обновляет один закреплённый пост в Telegram-канале раз в час. В посте показываются:

  • курс USD/RUB от ЦБ РФ
  • курс BTC/USD от CoinGecko
  • индекс страха/жадности от Alternative.me

Установка

  1. Установите Python 3.10+ на VPS.
  2. Перейдите в папку проекта:
    cd ~/Agents/tg_update_currency
    
  3. Создайте виртуальное окружение:
    python3 -m venv .venv
    source .venv/bin/activate
    
  4. Установите зависимости:
    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:

TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_CHAT_ID=@your_channel_username
TELEGRAM_MESSAGE_ID=123

Запуск вручную

source .venv/bin/activate
python bot_update_pinned_post.py

Если всё настроено верно, бот отредактирует закреплённый пост.

Настройка cron

  1. Откройте редактор cron:
    crontab -e
    
  2. Добавьте задачу:
    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 можно командой:

crontab -l

Проверка

  • Запустите скрипт вручную и проверьте, что закреплённый пост обновился.
  • Если один из API недоступен, скрипт ничего не изменит и запишет ошибку в лог.
  • Убедитесь, что бот добавлен в канал как администратор с правом редактировать сообщения.

Логирование

По умолчанию лог записывается в bot_update_pinned_post.log. В лог не пишутся токены, только время, значения и ошибки.

S
Description
Обновление курса валют в канале
Readme 50 KiB
Languages
Python 100%