Enhance TelegramNotifier to manage previous alerts and improve notification clarity
ci / build-backend (push) Successful in 1m21s
ci / build-frontend (push) Successful in 51s
ci / tests (push) Successful in 1m33s
ci / sonar (push) Successful in 3m51s

Updated the TelegramNotifier to delete previous alert messages before sending new notifications, ensuring that only the latest alert is visible to subscribers. Introduced a new property in TelegramSubscriber to track the latest alert message ID. Adjusted related tests to verify the new alert management behavior and updated documentation to reflect these changes, enhancing the overall user experience in message handling.
This commit is contained in:
Leonid Pershin
2026-07-31 21:20:25 +03:00
parent 4a2e6ac7f1
commit 3dbe0b7698
7 changed files with 1739 additions and 18 deletions
+11 -4
View File
@@ -48,6 +48,12 @@ NAT и через прокси, и это единственный вариан
пройти. Догон ограничен пятнадцатью минутами — после долгого простоя бот не станет пересказывать
вчерашний эфир.
В чате живёт только последнее оповещение: новое снимает предыдущее (`TelegramSubscriber.AlertMessageId`).
Оповещение отвечает на вопрос «что идёт сейчас», а вчерашнее «сейчас в эфире» на этот вопрос
отвечает неправдой — за сутки таких набирается несколько десятков, и найти среди них актуальное
нельзя. Счётчик отдельный от одноразовых ответов бота: рассылка приходит сама и не должна сносить
программу передач, которую зритель только что запросил.
## Меню в чате
`/start` с кодом привязывает чат и открывает меню; `/start` без кода — открывает меню уже
@@ -60,10 +66,11 @@ NAT и через прокси, и это единственный вариан
нажатие снимает подписку. `/stop` останавливает рассылку, не стирая подписки: вернувшись, зритель
получит свои каналы, а не пустой список.
**Бот убирает за собой.** В чате живут ровно два его сообщения: меню подписок и последнее
одноразовое программа передач, подтверждение привязки или отказ. Новое меню снимает предыдущее
(две панели с разными галочками означают, что одна врёт), новая программа — предыдущую программу.
Идентификаторы обоих сообщений хранятся у подписчика. Команды зрителя остаются: в личном чате бот
**Бот убирает за собой.** В чате живут ровно три его сообщения: меню подписок, последнее
одноразовое (программа передач, подтверждение привязки или отказ) и последнее оповещение рассылки.
Новое меню снимает предыдущее (две панели с разными галочками означают, что одна врёт), новая
программа — предыдущую программу, новое оповещение — предыдущее оповещение. Идентификаторы всех
трёх хранятся у подписчика. Команды зрителя остаются: в личном чате бот
вправе удалять только собственные сообщения, и права на чужие у него нет и не будет. Не удалившееся
сообщение (зритель убрал его сам, прошло больше 48 часов) уборку не срывает — это не та задача,
ради которой стоит рвать разговор.