From 0e216093829d2b2ba3fc9bdd492be5068c52d837 Mon Sep 17 00:00:00 2001 From: Leandro Toledo Date: Sat, 16 Apr 2016 11:23:25 -0300 Subject: [PATCH 1/2] Adding InputMessageContent classes #232 --- telegram/base.py | 7 ++++++- telegram/inputlocationmessagecontent.py | 16 +++++++++++++++- telegram/inputtextmessagecontent.py | 19 ++++++++++++++++++- telegram/inputvenuemessagecontent.py | 23 ++++++++++++++++++++++- 4 files changed, 61 insertions(+), 4 deletions(-) diff --git a/telegram/base.py b/telegram/base.py index 960776c1e..8cc5e5ab6 100644 --- a/telegram/base.py +++ b/telegram/base.py @@ -43,7 +43,12 @@ class TelegramObject(object): Returns: telegram.TelegramObject: """ - raise NotImplementedError + if not data: + return None + + data = data.copy() + + return data def to_json(self): """ diff --git a/telegram/inputlocationmessagecontent.py b/telegram/inputlocationmessagecontent.py index 5d19fc31c..178649da9 100644 --- a/telegram/inputlocationmessagecontent.py +++ b/telegram/inputlocationmessagecontent.py @@ -24,4 +24,18 @@ from telegram import InputMessageContent class InputLocationMessageContent(InputMessageContent): - pass + """Base class for Telegram InputLocationMessageContent Objects""" + + def __init__(self, + latitude, + longitude): + # Required + self.latitude = latitude + self.longitude = longitude + + @staticmethod + def de_json(data): + data = super(InputLocationMessageContent, + InputLocationMessageContent).de_json(data) + + return InputLocationMessageContent(**data) diff --git a/telegram/inputtextmessagecontent.py b/telegram/inputtextmessagecontent.py index 79eb72f9c..fceaf3349 100644 --- a/telegram/inputtextmessagecontent.py +++ b/telegram/inputtextmessagecontent.py @@ -24,4 +24,21 @@ from telegram import InputMessageContent class InputTextMessageContent(InputMessageContent): - pass + """Base class for Telegram InputTextMessageContent Objects""" + + def __init__(self, + message_text, + parse_mode=None, + disable_web_page_preview=None): + # Required + self.message_text = message_text + # Optionals + self.parse_mode = parse_mode + self.disable_web_page_preview = disable_web_page_preview + + @staticmethod + def de_json(data): + data = super(InputTextMessageContent, + InputTextMessageContent).de_json(data) + + return InputTextMessageContent(**data) diff --git a/telegram/inputvenuemessagecontent.py b/telegram/inputvenuemessagecontent.py index 0d1da602d..00abc7fc3 100644 --- a/telegram/inputvenuemessagecontent.py +++ b/telegram/inputvenuemessagecontent.py @@ -24,4 +24,25 @@ from telegram import InputMessageContent class InputVenueMessageContent(InputMessageContent): - pass + """Base class for Telegram InputVenueMessageContent Objects""" + + def __init__(self, + latitude, + longitude, + title, + address, + foursquare_id=None): + # Required + self.latitude = latitude + self.longitude = longitude + self.title = title + self.address = address + # Optionals + self.foursquare_id = foursquare_id + + @staticmethod + def de_json(data): + data = super(InputVenueMessageContent, + InputVenueMessageContent).de_json(data) + + return InputVenueMessageContent(**data) From b9305ca7ac4984a5594f5fa8d3f76b7515de1a5b Mon Sep 17 00:00:00 2001 From: Leandro Toledo Date: Sat, 16 Apr 2016 11:33:58 -0300 Subject: [PATCH 2/2] Adding MessageEntity and Venue classes #232 --- telegram/__init__.py | 4 ++++ telegram/messageentity.py | 35 +++++++++++++++++++++++++++++++++++ telegram/venue.py | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/telegram/__init__.py b/telegram/__init__.py index cf097b9b1..dd573add2 100644 --- a/telegram/__init__.py +++ b/telegram/__init__.py @@ -44,6 +44,7 @@ from .nullhandler import NullHandler from .emoji import Emoji from .parsemode import ParseMode from .message import Message +from .messageentity import MessageEntity from .callbackquery import CallbackQuery from .choseninlineresult import ChosenInlineResult from .inlinekeyboardbutton import InlineKeyboardButton @@ -74,6 +75,7 @@ from .inputtextmessagecontent import InputTextMessageContent from .inputlocationmessagecontent import InputLocationMessageContent from .inputvenuemessagecontent import InputVenueMessageContent from .inputcontactmessagecontent import InputContactMessageContent +from .venue import Venue from .update import Update from .bot import Bot @@ -157,6 +159,7 @@ __all__ = ['Audio', 'KeyboardButton', 'Location', 'Message', + 'MessageEntity', 'NullHandler', 'ParseMode', 'PhotoSize', @@ -169,5 +172,6 @@ __all__ = ['Audio', 'Update', 'User', 'UserProfilePhotos', + 'Venue', 'Video', 'Voice'] diff --git a/telegram/messageentity.py b/telegram/messageentity.py index 3d29ea07b..f9b9b022b 100644 --- a/telegram/messageentity.py +++ b/telegram/messageentity.py @@ -16,3 +16,38 @@ # # You should have received a copy of the GNU Lesser Public License # along with this program. If not, see [http://www.gnu.org/licenses/]. + +"""This module contains a object that represents a Telegram MessageEntity.""" + +from telegram import TelegramObject + + +class MessageEntity(TelegramObject): + """ + This object represents one special entity in a text message. For example, + hashtags, usernames, URLs, etc. + + Args: + type (str): + offset (int): + length (int): + url (Optional[str]): + """ + + def __init__(self, + type, + offset, + length, + url=None): + # Required + self.type = type + self.offset = offset + self.length = length + # Optionals + self.url = url + + @staticmethod + def de_json(self): + data = super(MessageEntity, MessageEntity).de_json(data) + + return MessageEntity(**data) \ No newline at end of file diff --git a/telegram/venue.py b/telegram/venue.py index 3d29ea07b..14f73e1b7 100644 --- a/telegram/venue.py +++ b/telegram/venue.py @@ -16,3 +16,39 @@ # # You should have received a copy of the GNU Lesser Public License # along with this program. If not, see [http://www.gnu.org/licenses/]. + +"""This module contains a object that represents a Telegram Venue.""" + +from telegram import TelegramObject, Location + + +class Venue(TelegramObject): + """ + This object represents a venue. + + Args: + location (:class:`telegram.Location`): + title (str): + address (str): + foursquare_id (Optional[str]): + """ + + def __init__(self, + location, + title, + address, + foursquare_id=None): + # Required + self.location = location + self.title = title + self.address = address + # Optionals + self.foursquare_id = foursquare_id + + @staticmethod + def de_json(self): + data = super(Venue, Venue).de_json(data) + + data['location'] = Location.de_json(data.get('location')) + + return Venue(**data) \ No newline at end of file