mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-11 18:01:04 +00:00
T61: Delete webhook before Polling
This commit is contained in:
parent
f0e8de613a
commit
0466041d85
1 changed files with 25 additions and 3 deletions
|
|
@ -1,10 +1,11 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
|
import types
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from .filters import CommandsFilter, ContentTypeFilter, RegexpFilter, USER_STATE, generate_default_filters, \
|
from .filters import CommandsFilter, ContentTypeFilter, ExceptionsFilter, RegexpFilter, USER_STATE, \
|
||||||
ExceptionsFilter
|
generate_default_filters
|
||||||
from .handler import Handler
|
from .handler import Handler
|
||||||
from .storage import BaseStorage, DisabledStorage, FSMContext
|
from .storage import BaseStorage, DisabledStorage, FSMContext
|
||||||
from .webhook import BaseResponse
|
from .webhook import BaseResponse
|
||||||
|
|
@ -166,22 +167,42 @@ class Dispatcher:
|
||||||
return err
|
return err
|
||||||
raise
|
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
|
Start long-pooling
|
||||||
|
|
||||||
:param timeout:
|
:param timeout:
|
||||||
:param relax:
|
:param relax:
|
||||||
:param limit:
|
:param limit:
|
||||||
|
:param reset_webhook:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if self._pooling:
|
if self._pooling:
|
||||||
raise RuntimeError('Pooling already started')
|
raise RuntimeError('Pooling already started')
|
||||||
|
|
||||||
log.info('Start pooling.')
|
log.info('Start pooling.')
|
||||||
|
|
||||||
context.set_value(MODE, LONG_POOLING)
|
context.set_value(MODE, LONG_POOLING)
|
||||||
context.set_value('dispatcher', self)
|
context.set_value('dispatcher', self)
|
||||||
context.set_value('bot', self.bot)
|
context.set_value('bot', self.bot)
|
||||||
|
|
||||||
|
if reset_webhook:
|
||||||
|
self.reset_webhook(check=True)
|
||||||
|
|
||||||
self._pooling = True
|
self._pooling = True
|
||||||
offset = None
|
offset = None
|
||||||
while self._pooling:
|
while self._pooling:
|
||||||
|
|
@ -791,6 +812,7 @@ class Dispatcher:
|
||||||
:param exception: you can make handler for specific errors type
|
:param exception: you can make handler for specific errors type
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(callback):
|
def decorator(callback):
|
||||||
self.register_errors_handler(callback, func=func, exception=exception)
|
self.register_errors_handler(callback, func=func, exception=exception)
|
||||||
return callback
|
return callback
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue