From 2d969cac0f1b227f1164bc72ea72f62eb1f00f0c Mon Sep 17 00:00:00 2001 From: Noam Meltzer Date: Tue, 1 Aug 2017 00:42:56 +0300 Subject: [PATCH 1/4] WIP effective attachment --- telegram/message.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/telegram/message.py b/telegram/message.py index a48314dc680..b00a6693539 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -27,6 +27,9 @@ from telegram.utils.helpers import escape_html, escape_markdown, to_timestamp, from_timestamp +_UNDEFINED = object() + + class Message(TelegramObject): """ This object represents a message. @@ -170,6 +173,7 @@ class Message(TelegramObject): successful_payment (:class:`telegram.SuccessfulPayment`, optional): Message is a service message about a successful payment, information about the payment. """ + _effective_attachment = _UNDEFINED def __init__(self, message_id, @@ -301,6 +305,22 @@ def de_json(cls, data, bot): return cls(bot=bot, **data) + @property + def effective_attachment(self): + if self._effective_attachment is not _UNDEFINED: + return self._effective_attachment + + for i in (self.audio, self.game, self.document, self.document, self.photo, self.sticker, + self.video, self.voice, self.video_note, self.contact, self.location, + self.venue, self.invoice, self.successful_payment): + if i is not None: + self._effective_attachment = i + break + else: + self._effective_attachment = None + + return self._effective_attachment + def __getitem__(self, item): if item in self.__dict__.keys(): return self.__dict__[item] From 07b7d14063200dc52bf4431dd18d0177650c4174 Mon Sep 17 00:00:00 2001 From: Noam Meltzer Date: Tue, 1 Aug 2017 22:46:49 +0300 Subject: [PATCH 2/4] Add documentation (probably wrong way) and unitest --- telegram/message.py | 11 ++++++++++- tests/test_message.py | 12 ++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/telegram/message.py b/telegram/message.py index b00a6693539..1f3cc8ad3b8 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -307,10 +307,19 @@ def de_json(cls, data, bot): @property def effective_attachment(self): + """ + Optional[Union[:class:`telegram.Audio`, :class:`telegram.Game`, :class:`telegram.Document`, + :class:`telegram.Photo`, :class:`telegram.Sticker`, :class:`telegram.Video`, + :class:`telegram.Voice`, :class:`telegram.VideoNote`, :class:`telegram.Contact`, + :class:`telegram.Location`, :class:`telegram.Venue`, :class:`telegram.Invoice`, + :class:`telegram.SuccessfulPayment`]]: The attachment that this message was sent with. May + be ``None`` if no attachment was sent. + + """ if self._effective_attachment is not _UNDEFINED: return self._effective_attachment - for i in (self.audio, self.game, self.document, self.document, self.photo, self.sticker, + for i in (self.audio, self.game, self.document, self.photo, self.sticker, self.video, self.voice, self.video_note, self.contact, self.location, self.venue, self.invoice, self.successful_payment): if i is not None: diff --git a/tests/test_message.py b/tests/test_message.py index 240dc7f8f04..893ad09e191 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -205,6 +205,18 @@ def test_equality(self): self.assertNotEqual(a, e) self.assertNotEqual(hash(a), hash(e)) + def test_effective_attachment(self): + for i in ('audio', 'game', 'document', 'photo', 'sticker', 'video', 'voice', 'video_note', + 'contact', 'location', 'venue', 'invoice', 'invoice', 'successful_payment'): + dummy = object() + kwargs = {i: dummy} + msg = telegram.Message(1, telegram.User(1, ""), None, None, **kwargs) + self.assertIs(msg.effective_attachment, dummy, + 'invalid {} effective attachment'.format(i)) + + msg = telegram.Message(1, telegram.User(1, ""), None, None) + self.assertIsNone(msg.effective_attachment) + if __name__ == '__main__': unittest.main() From 2d2022df6045e956fcf61a29a6a4329acc8b7cdb Mon Sep 17 00:00:00 2001 From: Noam Meltzer Date: Fri, 4 Aug 2017 23:25:33 +0300 Subject: [PATCH 3/4] Documentation fix per CR --- telegram/message.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/telegram/message.py b/telegram/message.py index 1f3cc8ad3b8..e6721218ef3 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -308,12 +308,12 @@ def de_json(cls, data, bot): @property def effective_attachment(self): """ - Optional[Union[:class:`telegram.Audio`, :class:`telegram.Game`, :class:`telegram.Document`, - :class:`telegram.Photo`, :class:`telegram.Sticker`, :class:`telegram.Video`, - :class:`telegram.Voice`, :class:`telegram.VideoNote`, :class:`telegram.Contact`, - :class:`telegram.Location`, :class:`telegram.Venue`, :class:`telegram.Invoice`, - :class:`telegram.SuccessfulPayment`]]: The attachment that this message was sent with. May - be ``None`` if no attachment was sent. + :class:`telegram.Audio` or :class:`telegram.Game` or :class:`telegram.Document` or + :class:`telegram.PhotoSize` or :class:`telegram.Sticker` or :class:`telegram.Video` or + :class:`telegram.Voice` or :class:`telegram.VideoNote` or :class:`telegram.Contact` or + :class:`telegram.Location` or :class:`telegram.Venue` or :class:`telegram.Invoice` or + :class:`telegram.SuccessfulPayment`: The attachment that this message was sent with. + May be ``None`` if no attachment was sent. """ if self._effective_attachment is not _UNDEFINED: From 8111658dc95195224d3109d0980b335d791e731c Mon Sep 17 00:00:00 2001 From: Noam Meltzer Date: Tue, 8 Aug 2017 00:23:26 +0300 Subject: [PATCH 4/4] another CR fix [ci skip] --- telegram/message.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/telegram/message.py b/telegram/message.py index e6721218ef3..2a938541b14 100644 --- a/telegram/message.py +++ b/telegram/message.py @@ -308,12 +308,20 @@ def de_json(cls, data, bot): @property def effective_attachment(self): """ - :class:`telegram.Audio` or :class:`telegram.Game` or :class:`telegram.Document` or - :class:`telegram.PhotoSize` or :class:`telegram.Sticker` or :class:`telegram.Video` or - :class:`telegram.Voice` or :class:`telegram.VideoNote` or :class:`telegram.Contact` or - :class:`telegram.Location` or :class:`telegram.Venue` or :class:`telegram.Invoice` or - :class:`telegram.SuccessfulPayment`: The attachment that this message was sent with. - May be ``None`` if no attachment was sent. + :class:`telegram.Audio` + or :class:`telegram.Contact` + or :class:`telegram.Document` + or :class:`telegram.Game` + or :class:`telegram.Invoice` + or :class:`telegram.Location` + or List[:class:`telegram.PhotoSize`] + or :class:`telegram.Sticker` + or :class:`telegram.SuccessfulPayment` + or :class:`telegram.Venue` + or :class:`telegram.Video` + or :class:`telegram.VideoNote` + or :class:`telegram.Voice`: The attachment that this message was sent with. May be + ``None`` if no attachment was sent. """ if self._effective_attachment is not _UNDEFINED: pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy