From 854b9efebb811a0cf3ad56b745ce900a6a42a4ba Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Mon, 18 Jul 2016 11:43:43 +0300 Subject: [PATCH 1/6] ChatMigrated exception --- telegram/error.py | 3 +++ telegram/utils/request.py | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/telegram/error.py b/telegram/error.py index 201f2c77869..f244c8a61e9 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -85,3 +85,6 @@ class TimedOut(NetworkError): def __init__(self): super(TimedOut, self).__init__('Timed out') + +class ChatMigrated(TelegramError): + pass diff --git a/telegram/utils/request.py b/telegram/utils/request.py index 1ace3fc4ffd..528e09b3e66 100644 --- a/telegram/utils/request.py +++ b/telegram/utils/request.py @@ -135,12 +135,14 @@ def _parse(json_data): except ValueError: raise TelegramError('Invalid server response') - if not data.get('ok') and data.get('description'): - return data['description'] + if not data.get('ok'): + if data.get('parameters') and data['parameters'].get('migrate_to_chat_id'): + raise ChatMigrated(str(data['parameters']['migrate_to_chat_id'])) + if data.get('description'): + return data['description'] return data['result'] - def _request_wrapper(*args, **kwargs): """Wraps urllib3 request for handling known exceptions. From accbe841a11a49ad296de267af93a92035628f68 Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Mon, 18 Jul 2016 11:51:48 +0300 Subject: [PATCH 2/6] import ChatMigrated error --- telegram/utils/request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telegram/utils/request.py b/telegram/utils/request.py index 528e09b3e66..6dad714dc6d 100644 --- a/telegram/utils/request.py +++ b/telegram/utils/request.py @@ -28,7 +28,7 @@ from urllib3.connection import HTTPConnection from telegram import (InputFile, TelegramError) -from telegram.error import Unauthorized, NetworkError, TimedOut, BadRequest +from telegram.error import Unauthorized, NetworkError, TimedOut, BadRequest, ChatMigrated _CON_POOL = None """:type: urllib3.PoolManager""" From 5ca503572e69313b7cea468ad9b35c52d04a8d11 Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Tue, 19 Jul 2016 16:27:16 +0300 Subject: [PATCH 3/6] fix formatting, int(chat_id) --- AUTHORS.rst | 1 + telegram/error.py | 7 ++++++- telegram/utils/request.py | 14 ++++++++++---- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 340708303d2..0628da9260d 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -22,6 +22,7 @@ The following wonderful people contributed directly or indirectly to this projec - `njittam `_ - `Noam Meltzer `_ - `Oleg Shlyazhko `_ +- `overquota `_ - `Rahiel Kasim `_ - `Shelomentsev D `_ - `sooyhwang `_ diff --git a/telegram/error.py b/telegram/error.py index f244c8a61e9..1edd8f42019 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -39,11 +39,14 @@ def _lstrip_str(in_s, lstr): class TelegramError(Exception): """This object represents a Telegram Error.""" - def __init__(self, message): + def __init__(self, message, **kwargs): """ Args: message (str): + Kwargs: + chat_id (int): + Returns: """ @@ -56,6 +59,7 @@ def __init__(self, message): # api_error - capitalize the msg... msg = msg.capitalize() self.message = msg + self.chat_id = kwargs.get('chat_id') def __str__(self): return '%s' % (self.message) @@ -86,5 +90,6 @@ class TimedOut(NetworkError): def __init__(self): super(TimedOut, self).__init__('Timed out') + class ChatMigrated(TelegramError): pass diff --git a/telegram/utils/request.py b/telegram/utils/request.py index 6dad714dc6d..f553b373f83 100644 --- a/telegram/utils/request.py +++ b/telegram/utils/request.py @@ -136,13 +136,19 @@ def _parse(json_data): raise TelegramError('Invalid server response') if not data.get('ok'): - if data.get('parameters') and data['parameters'].get('migrate_to_chat_id'): - raise ChatMigrated(str(data['parameters']['migrate_to_chat_id'])) - if data.get('description'): - return data['description'] + description = data.get('description') + parameters = data.get('parameters') + if description: + if parameters: + migrate_to_chat_id = parameters.get('migrate_to_chat_id') + if migrate_to_chat_id: + raise ChatMigrated(description, chat_id=int(migrate_to_chat_id)) + else: + return description return data['result'] + def _request_wrapper(*args, **kwargs): """Wraps urllib3 request for handling known exceptions. From cb9c85cf514609b70358aad51c0b57dc264967fa Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Wed, 20 Jul 2016 15:43:38 +0300 Subject: [PATCH 4/6] More liberal, new_chat_id goes into ChatMigrated exception --- telegram/error.py | 18 ++++++++++++------ telegram/utils/request.py | 11 +++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/telegram/error.py b/telegram/error.py index 1edd8f42019..04ef5dcd0cc 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -39,14 +39,11 @@ def _lstrip_str(in_s, lstr): class TelegramError(Exception): """This object represents a Telegram Error.""" - def __init__(self, message, **kwargs): + def __init__(self, message): """ Args: message (str): - Kwargs: - chat_id (int): - Returns: """ @@ -59,7 +56,6 @@ def __init__(self, message, **kwargs): # api_error - capitalize the msg... msg = msg.capitalize() self.message = msg - self.chat_id = kwargs.get('chat_id') def __str__(self): return '%s' % (self.message) @@ -92,4 +88,14 @@ def __init__(self): class ChatMigrated(TelegramError): - pass + + def __init__(self, new_chat_id): + """ + Args: + new_chat_id (int): + + Returns: + + """ + super(ChatMigrated, self).__init__('Chat migrated to {}'.format(new_chat_id)) + self.new_chat_id = new_chat_id diff --git a/telegram/utils/request.py b/telegram/utils/request.py index f553b373f83..696e6d95cdf 100644 --- a/telegram/utils/request.py +++ b/telegram/utils/request.py @@ -138,13 +138,12 @@ def _parse(json_data): if not data.get('ok'): description = data.get('description') parameters = data.get('parameters') + if parameters: + migrate_to_chat_id = parameters.get('migrate_to_chat_id') + if migrate_to_chat_id: + raise ChatMigrated(migrate_to_chat_id) if description: - if parameters: - migrate_to_chat_id = parameters.get('migrate_to_chat_id') - if migrate_to_chat_id: - raise ChatMigrated(description, chat_id=int(migrate_to_chat_id)) - else: - return description + return description return data['result'] From f16080af28a850c63a01a46d09f6ee965599c934 Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Wed, 20 Jul 2016 15:48:28 +0300 Subject: [PATCH 5/6] format position --- telegram/error.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telegram/error.py b/telegram/error.py index 04ef5dcd0cc..fcfd8677eaa 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -97,5 +97,5 @@ def __init__(self, new_chat_id): Returns: """ - super(ChatMigrated, self).__init__('Chat migrated to {}'.format(new_chat_id)) + super(ChatMigrated, self).__init__('Chat migrated to {0}'.format(new_chat_id)) self.new_chat_id = new_chat_id From d5566117054e2f05eb3727b06bb5b92c75d830a3 Mon Sep 17 00:00:00 2001 From: Aleksei Arsenev Date: Thu, 21 Jul 2016 10:12:08 +0300 Subject: [PATCH 6/6] more simple msg --- telegram/error.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telegram/error.py b/telegram/error.py index fcfd8677eaa..a13afeb1600 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -97,5 +97,5 @@ def __init__(self, new_chat_id): Returns: """ - super(ChatMigrated, self).__init__('Chat migrated to {0}'.format(new_chat_id)) + super(ChatMigrated, self).__init__('Chat migrated') self.new_chat_id = new_chat_id