diff --git a/channels/telegram_channel.py b/channels/telegram_channel.py index c94a17a..dde9974 100644 --- a/channels/telegram_channel.py +++ b/channels/telegram_channel.py @@ -82,8 +82,9 @@ class TelegramChannel(BaseChannel): """Endlos-Polling im Hintergrund.""" try: await self._app.updater.start_polling(allowed_updates=["message"]) - # Warte bis gestoppt - await self._app.updater.idle() + # In PTB v20+ läuft der Updater als eigener asyncio-Task weiter – + # wir warten hier einfach, bis der Task abgebrochen wird. + await asyncio.Event().wait() except asyncio.CancelledError: pass except Exception as exc: diff --git a/tasks/receiver.py b/tasks/receiver.py index 4ec1ea9..f5f0efc 100644 --- a/tasks/receiver.py +++ b/tasks/receiver.py @@ -21,14 +21,15 @@ def build_scheduler(whatsapp: "WhatsAppChannel") -> AsyncIOScheduler: _scheduler = AsyncIOScheduler(timezone="UTC") - # WhatsApp-Polling alle 5 Sekunden + # WhatsApp-Polling alle 10 Sekunden (coalesce=True überspringt verpasste Läufe) _scheduler.add_job( _poll_whatsapp, - trigger=IntervalTrigger(seconds=5), + trigger=IntervalTrigger(seconds=10), id="whatsapp-poll", name="WhatsApp incoming messages", max_instances=1, coalesce=True, + misfire_grace_time=5, ) return _scheduler