Для фонової автоматизації OneASO розроблено Telegram-бота. Коли робота зупиняється через капчу або перевірку Cloudflare, власник отримує на телефон повідомлення про причину зупинки й розуміє, що потрібно зробити.
Подія OneASO → SQLite → Telegram
Для епізодів і надсилань використав SQLite. Бот записує стан події до журналу та звертається до нього під час повторної обробки. Історія зберігається між запусками: перезапуск не перетворює попередню зупинку на нове сповіщення.
Для кожного епізоду зберігається зв’язок із його повідомленням та адресатом. Якщо вміст або одержувач уже зареєстрованого епізоду змінилися, модуль надсилання відхиляє таку спробу. Це захищає журнал від підміни однієї зупинки іншою.
| Стан епізоду OneASO | Значення для сповіщення |
|---|---|
| sending | Надсилання вже розпочато |
| sent | Сповіщення надіслано |
| unknown | Відповіді на запит не отримано; перед повтором потрібна звірка |
| blocked | Надсилання зупинено перевіркою |
Ключ підключення: Windows DPAPI
Ключ бота зашифровано через DPAPI засобами Windows. Перед надсиланням перевіряються бот і одержувач. Власник отримує повідомлення у свій Telegram; капчу проходить сам користувач.
Паузи API та невизначена відповідь
У разі обмеження Telegram API модуль надсилання враховує retry_after: нові епізоди цього бота чекають протягом зазначеної паузи. Якщо відповідь на запит надсилання втрачено, епізод отримує статус unknown. Автоматичного повтору такого повідомлення немає.
Розділив збій до надсилання та невідомий результат уже розпочатої доставки. Завдяки журналу SQLite наступний запуск бачить стан епізоду й ухвалює рішення відповідно до нього.
Один епізод залишається одним епізодом
Модуль надсилання OneASO враховує ситуацію, коли запит уже надіслано, а підтвердження від сервера ще не надійшло. За такої відповіді не можна визначити, чи загубилося сповіщення: воно могло з’явитися в листуванні. Тому unknown зберігається в SQLite. Після перезапуску цей епізод залишається для звірки й не потрапляє до черги повторів.
Інакше обробляється пауза retry_after. Тут API повідомив тривалість очікування, і модуль надсилання OneASO записує обмеження для всього бота. У цей проміжок інший епізод також чекає: зміна події не скасовує паузи.
Ще одна межа проходить за вмістом запису SQLite. Збережений епізод не можна використовувати для іншого адресата або тексту. Для зміненої зупинки потрібен окремий запис. Такий підхід пов’язує сповіщення з причиною, через яку власник OneASO отримав сигнал.
Бот підключений до OneASO
Перевірив тестове надсилання за відповіддю API та історією Telegram. Повторний запуск не надіслав дублікат. Бот підключений до автоматизації OneASO й повідомляє, коли фонове завдання чекає на людину.
Обговорити сповіщення для вашого процесу · Інші проєкти OneASO