From 0466041d85613b96cc251002d1a0c39410255b85 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 11 Nov 2017 11:56:56 +0200 Subject: [PATCH] T61: Delete webhook before Polling --- aiogram/dispatcher/__init__.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/aiogram/dispatcher/__init__.py b/aiogram/dispatcher/__init__.py index 37c3ad87..d5eb71d0 100644 --- a/aiogram/dispatcher/__init__.py +++ b/aiogram/dispatcher/__init__.py @@ -1,10 +1,11 @@ import asyncio import functools import logging +import types import typing -from .filters import CommandsFilter, ContentTypeFilter, RegexpFilter, USER_STATE, generate_default_filters, \ - ExceptionsFilter +from .filters import CommandsFilter, ContentTypeFilter, ExceptionsFilter, RegexpFilter, USER_STATE, \ + generate_default_filters from .handler import Handler from .storage import BaseStorage, DisabledStorage, FSMContext from .webhook import BaseResponse @@ -166,22 +167,42 @@ class Dispatcher: return err raise - async def start_pooling(self, timeout=20, relax=0.1, limit=None): + async def reset_webhook(self, check=True) -> types.Boolean: + """ + Reset webhook + + :param check: check before deleting + :return: + """ + if check: + wh = await self.bot.get_webhook_info() + if not wh.url: + return False + + return await self.bot.delete_webhook() + + async def start_pooling(self, timeout=20, relax=0.1, limit=None, reset_webhook=True): """ Start long-pooling :param timeout: :param relax: :param limit: + :param reset_webhook: :return: """ if self._pooling: raise RuntimeError('Pooling already started') + log.info('Start pooling.') + context.set_value(MODE, LONG_POOLING) context.set_value('dispatcher', self) context.set_value('bot', self.bot) + if reset_webhook: + self.reset_webhook(check=True) + self._pooling = True offset = None while self._pooling: @@ -791,6 +812,7 @@ class Dispatcher: :param exception: you can make handler for specific errors type :return: """ + def decorator(callback): self.register_errors_handler(callback, func=func, exception=exception) return callback