Skip to content

Telegram‑бот, що автоматично оновлює та закріплює графік стабілізаційних відключень у каналах кожні 5 хвилин.

License

Notifications You must be signed in to change notification settings

Baskerville42/outage_ua_bot

GraphenkoBot (@outage_ua_bot)

graphenko_bot

Коротко

  • Оновлює закріплене повідомлення із PNG‑зображенням у підключених каналах/чатах кожні 5 хвилин.
  • Канал реєструється автоматично після додавання бота. Конфіг зберігається в graphenko-chats.json.
  • Після успішних команд бот видаляє саме командне повідомлення. Якщо бота прибрано з каналу — запис видаляється автоматично.

Вимоги

  • BOT_TOKEN (GitHub Secret або .env локально).
  • Бот має бути адміністратором із правом Pin messages і видалення повідомлень.

Швидкий старт

  1. Додайте бота до каналу/чату (бот надішле вітання і зареєструє chat_id).
  2. У каналі надішліть команду з URL зображення:
/graphenko_image https://raw.githubusercontent.com/Baskerville42/outage-data-ua/refs/heads/main/images/kyiv/gpv-3-2-emergency.png

Вимоги до URL: починається з .../images/ і закінчується на .png; ресурс має бути доступний. 3) За потреби встановіть підпис:

  • Власний: /graphenko_caption Мій власний підпис
  • За замовчуванням: /graphenko_caption -default

Команди

  • /graphenko_image <url.png> — зберігає image_url, видаляє вітальне повідомлення, надсилає/оновлює і закріплює пост.
  • /graphenko_caption <текст> — зберігає підпис для цього чату.
  • /graphenko_caption -default — прибирає кастомний підпис, повертає стандартний.

Поведінка

  • Стандартний підпис (якщо свій не задано): "⚡️ Графік стабілізаційних вимкнень. Це повідомлення оновлюється щогодини автоматично." Бот автоматично додає рядок: "Оновлено: YYYY-MM-DD HH:mm" (час Europe/Kyiv).
  • Кеш‑бастинг: до URL додається ?cb=, щоб обійти кеш Telegram.
  • Якщо "message is not modified" — вважається успішно; бот усе одно перевіряє пін.
  • Якщо API повертає 403 (бот більше не в каналі) або отримано my_chat_member зі статусом left/kicked — канал автоматично розреєстровується (видаляється з файлу).

Конфіг (graphenko-chats.json)

  • Формат: масив об’єктів { "<chat_id>": { image_url?, caption?, message_id?, welcome_message_id?, message_thread_id? } }.
  • message_id і welcome_message_id веде бот; вручну їх не змінюйте.
  • caption зберігається лише коли явно встановлений; якщо поля немає — використовується стандартний підпис.
  • message_thread_id — необов’язковий ідентифікатор треду (форум‑топіка) у супергрупі. Якщо заданий, нові повідомлення із зображенням надсилатимуться саме в цей тред та там же закріплюватимуться. Корисно для чатів із увімкненими топіками.

Локальний запуск

  • .env: BOT_TOKEN=YOUR_TELEGRAM_BOT_TOKEN
  • Команда: node index.mjs

GitHub Actions

  • .github/workflows/run-graphenko-bot.yml запускається кожні 5 хвилин та вручну. Файл graphenko-chats.json є єдиним джерелом конфігурації і автоматично оновлюється під час роботи скрипта.

About

Telegram‑бот, що автоматично оновлює та закріплює графік стабілізаційних відключень у каналах кожні 5 хвилин.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 2

  •  
  •