@alertinua_bot

Панель моніторингу

@alertinua_bot
Період

Діаграма подій

Діаграма запитів

Оперативність джерел

Провтики джерел

Витрати на ШІ

Активні тривоги

Статистика тривог

Проблеми конфігу

    За чатами

    Останні невдачі

    Останні відправлення

    Лог

    Як бот вирішує, що надсилати

    Два рівноправні джерела

    Офіційне ukrainealarm.com (у текстах — ua). Воно саме повідомляє боту про зміни вебхуком. Опитування лишилось одне — знімок при старті процесу: вебхук надсилає тільки зміни, тож без знімка бот не знав би, які тривоги вже тривають. Планової звірки немає: кожен зайвий запит підвищує шанс дістати 401 саме тоді, коли він справді потрібен.

    Неофіційне, дублююче — alerts.in.ua (у текстах — aiu), опитується щоцикла, кожні 10 секунд. З 19.09.2026 його слово йде в ефір нарівні з офіційним. Кожне з двох можна вимкнути в «Налаштуваннях → Джерела» (обидва разом — ні).

    Чому саме так: джерела не сперечаються про факт тривоги — вони різняться лише тим, як швидко новина до нас доїжджає. За 15–18.09.2026 з 59 розбіжностей на старті всі 59 виявились затримкою доставки, а не незгодою; на відбої з 99 таких 95. Натомість 18.09 офіційне джерело пропустило червону тривогу (балістику) на Бучанському районі, яку резерв бачив, — і стара модель залишила п'ять каналів без сповіщення.

    Джерела рівноправні — хто перший, той і в ефір

    • Старт: повідомило будь-яке живе джерело — тривога йде в ефір негайно, ні в кого не питаючи дозволу.
    • Відбій: лише коли тривоги не бачить жодне живе джерело.
    • Рівень: значення від того, чиє рішення свіжіше. Не «найсуворіший із двох» — це правило вже пробували, і воно успадковувало застиглу думку: 12.09 офіційне зняло ракетну загрозу з чотирьох районів Кіровоградщини, а alerts.in.ua тримав червоний ще півгодини.
    • Дубль: друге джерело каже те саме — стан уже такий, отже нічого не надсилається. Одну подію впізнаємо за циклом: локація + тип + час початку. Обидва джерела несуть ту саму мітку початку (з 1736 пар 1735 збігаються до мілісекунди).
    • Подію резерву по локації, якої немає в довіднику основного, бот відкидає одразу: такої локації для нього не існує, і у вибиралці її теж немає. Але пише про це в лог — мовчання приховало б те, що офіційний довідник чогось не містить.
    • Осліпле джерело голосу не має: поки воно щойно моргнуло, бот не публікує подій, які випливають із нашої сліпоти, — зниження рівня й відбою тривоги, яку вело лише воно.
    • Застарілий вебхук відкидається. На масовій тривозі джерело ухвалює рішення за секунди, а розсилає хвилинами, тож повідомлення приходять не в порядку ухвалення. «Тривога», ухвалена до відбою, може прилетіти після нього — і воскресила б погашену тривогу. Тому порядок визначає час рішення, а не час прильоту.

    Загрози, область і район у тексті беруться з погляду того джерела, чия думка пішла в ефір: інакше там лишалась би загроза, яку воно вже зняло.

    А %source% — це хто про тривогу повідомив, у порядку від раннішого до пізнішого. Одне джерело в переліку означає, що друге про цю тривогу змовчало.

    Тривога оголошується на районі, а підписка може бути на громаду

    Тривоги майже завжди оголошують на рівні району: за дві доби спостережень офіційне джерело торкнулось 105 районів і лише 6 громад. Тому бот рахує успадкування сам, за деревом довідника: оголосили на районі — усі його громади теж тривожні, оголосили на області — усі її райони й громади.

    • Перемагає найближче оголошення, а не найсуворіше: в області червона, а в районі оголошено жовту — підписник району бачить жовту.
    • Типи не змішуються: якщо в районі є й повітряна, і артилерійська, підуть два окремі повідомлення.
    • У тексті %loc% — ваша локація, а %declared% — та, де тривогу справді оголосили. Коли це те саме місце, обидві підстановки дають однакове.
    • Київ, Харків і Запоріжжя в довіднику стоять самостійно, не під своїми областями: тривога в області їх не стосується, і навпаки.
    • Одна тривога — одне повідомлення. Якщо адресат підписаний і на район, і на громаду під ним, піде тільки район: виграє найзагальніша з його підписок, яких ця тривога стосується. У сусіда, підписаного лише на громаду, піде громада — правило діє в межах адресата. Різні типи тривог одне одного не придушують: повітряна по району й артилерійська по громаді — це дві події.
    • У статистиці рахується тільки оголошене: район — один рядок, а не дев'ять громад під ним.

    Коли джерело не відповідає

    Одна невдала відповідь — це ще не сліпота. Стан основного веде вебхук, тож поки від джерела нещодавно щось надходило, картина не гірша, ніж була.

    Джерело, яке справді втрачене, у циклі не враховується: воно нікого не тримає живим, і відбій не зависає через мовчазне джерело. Якщо втрачені обидва — цикл пропускається цілком.

    Виняток — події, які випливають не з ефіру, а з нашої сліпоти: не публікується зниження рівня, якщо мовчить саме те джерело, що бачило суворіший рівень, і не публікується відбій тривоги, яку вело лише мовчазне джерело. Початок і підвищення працюють як завжди.

    «Мовчить» означає щойно моргнуло. Джерело, недоступне понад 10 хвилин, більше нічого не притримує: інакше тривога, яку бачило тільки воно, лишалась би активною вічно.

    Чому не приходить двічі

    Подія — це адресат + локація + тип + рівень + перехід. Дедуплікація йде саме за цим, а не за текстом повідомлення. Тому та сама тривога, що прилетіла від другого джерела на кілька секунд пізніше, нікого не турбує вдруге. І навпаки: два різних переходи з однаковим текстом не злипнуться в один.

    Довідник локацій

    Каталог — це довідник офіційного джерела, і тільки він: звідти беруться номери, назви, тип і вкладеність, за якою тривога успадковується. Звірка раз на добу. У панелі — і в цьому дереві, і у вибиралці — показується офіційна назва, вона довша й однозначніша. У текстах повідомлень %loc% лишається коротка назва; там, де вони різні, коротка написана поруч сірим.

    Якщо локація зникає з офіційного довідника, а на неї є ввімкнена підписка — бот пише про це в Telegram і ставить біля неї бедж зникла з довідника. Поки бедж стоїть, ця підписка нічого не зловить. Невдала звірка повторюється за 10 хвилин, а не відкладається на добу.

    Чого офіційне джерело не покриває

    м. Севастополь, чотири окупованих райони Луганщини з їхніми громадами і дубль Миколаївської ТГ (1181). У каталозі їх більше немає зовсім: підписатись на них однаково неможливо. Якщо їх колись додадуть, вони з'являться самі — довідник звіряється раз на добу.

    Окремих міст офіційне джерело теж не знає: вузол «м. Харків та Харківська ТГ» означає обидва разом. Тому вісім міст, які alerts.in.ua нумерує окремо, згорнуто в їхні громади — інакше та сама тривога приходила б двічі під різними номерами.

    Завантаження…

    © OpenStreetMap · Natural Earth · Дані: NEPTUN, КОНТУР, ukrainealarm, NASA FIRMS

    Джерела тривог

    що бот слухає і чим страхується

    Канали стрічки

    звідки вкладка «Моніторинг» бере пости

    Фільтр стрічки

    які пости каналів показувати в «Моніторингу» й додатку

    Налаштування фільтра змінено

    Шари мапи

    цілі й наслідки поверх мапи тривог на «Моніторингу»

    Типове повідомлення не збережено

    іде туди, де в підписки свого тексту немає

    Додаток

    телефони, яким дозволено «Моніторинг» без пароля

    ШІ аналітик

    відгуки про неточні відповіді — з питанням, контекстом і відповіддю моделі

    Система

    перезапуск, ручна розсилка, спільне сховище dev ↔ prod і віддалена діагностика

    Перезапуск

    Перезапустити бота
    без оновлення коду; на старті бот бере свіжий знімок джерел і закриває тривоги, яких там уже немає

    Розсилка

    Спільне сховище

    Діагностика