Для фонової автоматизації OneASO розроблено Telegram-бота. Коли робота зупиняється через капчу або перевірку Cloudflare, власник отримує на телефон повідомлення про причину зупинки й розуміє, що потрібно зробити.

Telegram-бот OneASO для подій фонової автоматизації
Сповіщення OneASO в Telegram.

Подія OneASO → SQLite → Telegram

Для епізодів і надсилань використав SQLite. Бот записує стан події до журналу та звертається до нього під час повторної обробки. Історія зберігається між запусками: перезапуск не перетворює попередню зупинку на нове сповіщення.

Для кожного епізоду зберігається зв’язок із його повідомленням та адресатом. Якщо вміст або одержувач уже зареєстрованого епізоду змінилися, модуль надсилання відхиляє таку спробу. Це захищає журнал від підміни однієї зупинки іншою.

Стан епізоду OneASOЗначення для сповіщення
sendingНадсилання вже розпочато
sentСповіщення надіслано
unknownВідповіді на запит не отримано; перед повтором потрібна звірка
blockedНадсилання зупинено перевіркою
Схема обробки події та сповіщення OneASO
Від події автоматизації до повідомлення власнику OneASO.

Ключ підключення: Windows DPAPI

Ключ бота зашифровано через DPAPI засобами Windows. Перед надсиланням перевіряються бот і одержувач. Власник отримує повідомлення у свій Telegram; капчу проходить сам користувач.

Паузи API та невизначена відповідь

У разі обмеження Telegram API модуль надсилання враховує retry_after: нові епізоди цього бота чекають протягом зазначеної паузи. Якщо відповідь на запит надсилання втрачено, епізод отримує статус unknown. Автоматичного повтору такого повідомлення немає.

Розділив збій до надсилання та невідомий результат уже розпочатої доставки. Завдяки журналу SQLite наступний запуск бачить стан епізоду й ухвалює рішення відповідно до нього.

Один епізод залишається одним епізодом

Модуль надсилання OneASO враховує ситуацію, коли запит уже надіслано, а підтвердження від сервера ще не надійшло. За такої відповіді не можна визначити, чи загубилося сповіщення: воно могло з’явитися в листуванні. Тому unknown зберігається в SQLite. Після перезапуску цей епізод залишається для звірки й не потрапляє до черги повторів.

Інакше обробляється пауза retry_after. Тут API повідомив тривалість очікування, і модуль надсилання OneASO записує обмеження для всього бота. У цей проміжок інший епізод також чекає: зміна події не скасовує паузи.

Ще одна межа проходить за вмістом запису SQLite. Збережений епізод не можна використовувати для іншого адресата або тексту. Для зміненої зупинки потрібен окремий запис. Такий підхід пов’язує сповіщення з причиною, через яку власник OneASO отримав сигнал.

Бот повідомляє власнику OneASO про капчу й паузи фонової автоматизації. Журнал SQLite зберігає епізоди між запусками.

Бот підключений до OneASO

17перевірок доставки, логіки та захисту

Перевірив тестове надсилання за відповіддю API та історією Telegram. Повторний запуск не надіслав дублікат. Бот підключений до автоматизації OneASO й повідомляє, коли фонове завдання чекає на людину.

Обговорити сповіщення для вашого процесу · Інші проєкти OneASO

Обговорити завдання