diff --git a/aiogram/exceptions.py b/aiogram/exceptions.py index bade4446..9f25b1a3 100644 --- a/aiogram/exceptions.py +++ b/aiogram/exceptions.py @@ -1,3 +1,7 @@ +from aiogram import types +from .utils import json + + class ValidationError(Exception): pass @@ -9,3 +13,18 @@ class TelegramAPIError(Exception): self.method = method self.status = status self.body = body + + def json(self): + if not self.body: + return None + try: + data = json.dumps(self.body) + except Exception: + data = None + return data + + @property + def parameters(self): + data = self.json() + if data and 'parameters' in data: + return types.ResponseParameters.deserialize(data['parameters']) diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index c47c9dc1..b8fff0e8 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -32,6 +32,7 @@ from .order_info import OrderInfo from .photo_size import PhotoSize from .pre_checkout_query import PreCheckoutQuery from .reply_keyboard import KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove +from .response_parameters import ResponseParameters from .shipping_address import ShippingAddress from .shipping_option import ShippingOption from .shipping_query import ShippingQuery @@ -115,6 +116,7 @@ __all__ = [ 'PreCheckoutQuery', 'ReplyKeyboardMarkup', 'ReplyKeyboardRemove', + 'ResponseParameters', 'ShippingAddress', 'ShippingOption', 'ShippingQuery',