Telegram-бот-рассыльщик 1.0 Help

Ключевые реализации

Автоматический поиск сообщений с сообщениями о проблемах

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