Ключевые реализации
Автоматический поиск сообщений с сообщениями о проблемах
main.py
TECH_SUPPORT_KEYWORDS = ["не работает", "ТВ", "нет сигнала", "не включается",
"нет трансляции", "нет вещания", "остановилась трансляция", "черный экран"]
...
@dp.message(F.chat.type.in_({ChatType.SUPERGROUP, ChatType.GROUP}))
async def group_handler(message: Message):
# Автоматическое обнаружение техзапросов
if any(keyword in message.text.lower() for keyword in TECH_SUPPORT_KEYWORDS):
await bot.send_message(TECH_SUPPORT_CHAT_ID, форматированное_сообщение)
Синхронизация чатов с данными из CMS
config/config_bot.py
chat_sync = ChatSyncService(
bot,
cron_expr_sync="* * * * *",
cron_expr_chat="* * * * *"
)
async def startup(bot: Bot) -> None:
chat_sync.init()
chat_sync.start()
async def shutdown(bot: Bot) -> None:
chat_sync.stop()
Автоматическая рассылка поздравлений
scheduler/chat_sync.py
async def _sync(self) -> None:
...
for chat_id in chat_ids_to_schedule - chat_ids_with_active_jobs:
job_name = f"send_{chat_id}"
templates_for_chat = templates_per_chat[chat_id]
self._cron_manager.register(
name=job_name,
cron_expr=self._cron_expr_chat,
func=partial(chat_cron_task, self.bot, templates_for_chat),
tz=self._tz,
)
self._cron_manager.start(job_name)
...
scheduler/actions/congratulate_holiday.py
async def chat_cron_task(bot: Bot, template_list: list[TemplateEngineOutput]):
for tpl_output in template_list:
tpl_output: TemplateEngineOutput
today = datetime.today().date()
...
try:
await congratulate_with_holiday(bot, tpl_output, today)
...
async def congratulate_with_holiday(bot, tpl_output: TemplateEngineOutput, today: datetime.date):
try:
await bot.send_message(chat_id=tpl_output.partner.chatId, text=tpl_output.text)
await create_congratulation_action(tpl_output)
...
08 August 2025