Класс для подписки на Webhook
This commit is contained in:
parent
b994717f64
commit
9010c697f4
70
maxapi/methods/subscribe_webhook.py
Normal file
70
maxapi/methods/subscribe_webhook.py
Normal file
@ -0,0 +1,70 @@
|
||||
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
||||
|
||||
from ..methods.types.subscribed import Subscribed
|
||||
|
||||
from ..enums.http_method import HTTPMethod
|
||||
from ..enums.api_path import ApiPath
|
||||
from ..enums.update import UpdateType
|
||||
|
||||
from ..connection.base import BaseConnection
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..bot import Bot
|
||||
|
||||
|
||||
class SubscribeWebhook(BaseConnection):
|
||||
|
||||
"""
|
||||
Подписывает бота на получение обновлений через WebHook.
|
||||
После вызова этого метода бот будет получать уведомления о новых событиях в чатах на указанный URL.
|
||||
Ваш сервер должен прослушивать один из следующих портов: `80`, `8080`, `443`, `8443`, `16384`-`32383`.
|
||||
|
||||
Args:
|
||||
bot (Bot): Экземпляр бота для выполнения запроса.
|
||||
url (str): URL HTTP(S)-эндпойнта вашего бота. Должен начинаться с http(s)://
|
||||
update_types (Optional[List[str]]): Список типов обновлений, которые ваш бот хочет получать. Для полного списка типов см. объект
|
||||
secret (str): От 5 до 256 символов. Cекрет, который должен быть отправлен в заголовке X-Max-Bot-Api-Secret в каждом запросе Webhook. Разрешены только символы A-Z, a-z, 0-9, и дефис. Заголовок рекомендован, чтобы запрос поступал из установленного веб-узла
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
bot: 'Bot',
|
||||
url: str,
|
||||
update_types: Optional[List[UpdateType]] = None,
|
||||
secret: Optional[str] = None
|
||||
):
|
||||
self.bot = bot
|
||||
self.url = url
|
||||
self.update_types = update_types
|
||||
self.secret = secret
|
||||
|
||||
async def fetch(self) -> Subscribed:
|
||||
|
||||
"""
|
||||
Отправляет запрос на подписку бота на получение обновлений через WebHook
|
||||
|
||||
Returns:
|
||||
Subscribed: Объект с информацией об операции
|
||||
"""
|
||||
|
||||
if self.bot is None:
|
||||
raise RuntimeError('Bot не инициализирован')
|
||||
|
||||
json: Dict[str, Any] = {}
|
||||
|
||||
json['url'] = self.url
|
||||
|
||||
if self.update_types:
|
||||
json['update_types'] = self.update_types
|
||||
|
||||
if self.secret:
|
||||
json['secret'] = self.secret
|
||||
|
||||
return await super().request(
|
||||
method=HTTPMethod.POST,
|
||||
path=ApiPath.SUBSCRIPTIONS,
|
||||
model=Subscribed,
|
||||
params=self.bot.params,
|
||||
json=json
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user