master
Telegram Пин-бот курса
Этот проект обновляет один закреплённый пост в Telegram-канале раз в час. В посте показываются:
- курс USD/RUB от ЦБ РФ
- курс BTC/USD от CoinGecko
- индекс страха/жадности от Alternative.me
Установка
- Установите Python 3.10+ на VPS.
- Перейдите в папку проекта:
cd ~/Agents/tg_update_currency - Создайте виртуальное окружение:
python3 -m venv .venv source .venv/bin/activate - Установите зависимости:
pip install -r requirements.txt
Настройка .env
- Получите токен у @BotFather:
- Запустите @BotFather в Telegram.
- Выберите /newbot и следуйте инструкциям.
- Скопируйте токен вида
123456:ABC-DEF....
- Узнайте
CHAT_IDканала:- Добавьте бота в канал как администратора.
- Используйте
@getidsbotили@username_to_id_botв Telegram. - Если канал имеет публичный username, можно указать
@your_channel_username.
- Узнайте
MESSAGE_IDзакреплённого сообщения:- Вручную создайте и закрепите пост в канале.
- Если бот администратор, вызовите
https://api.telegram.org/bot<TOKEN>/getChat?chat_id=@your_channel_username. - В ответе найдите поле
pinned_message.message_id. - Либо получите ID предыдущим ботом, когда публиковали сообщение.
- Создайте файл
.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
- Откройте редактор cron:
crontab -e - Добавьте задачу:
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 - Сохраните и выйдите.
Проверить cron можно командой:
crontab -l
Проверка
- Запустите скрипт вручную и проверьте, что закреплённый пост обновился.
- Если один из API недоступен, скрипт ничего не изменит и запишет ошибку в лог.
- Убедитесь, что бот добавлен в канал как администратор с правом редактировать сообщения.
Логирование
По умолчанию лог записывается в bot_update_pinned_post.log.
В лог не пишутся токены, только время, значения и ошибки.
Description
Languages
Python
100%