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