From 03b02561a57d04c1c81e90473567c628d054baa0 Mon Sep 17 00:00:00 2001 From: oleg Date: Wed, 6 May 2020 13:23:39 +0500 Subject: [PATCH 1/3] Add request_poll attribute to KeyboardButton; Add KeyboardButtonPollType object --- telebot/types.py | 16 +++++++++++++--- tests/test_types.py | 8 ++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/telebot/types.py b/telebot/types.py index defe601..9cc9162 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -117,7 +117,6 @@ class Update(JsonDeserializable): self.shipping_query = shipping_query self.pre_checkout_query = pre_checkout_query self.poll = poll - self.poll_answer = poll_answer class WebhookInfo(JsonDeserializable): @@ -223,7 +222,7 @@ class Chat(JsonDeserializable): def __init__(self, id, type, title=None, username=None, first_name=None, last_name=None, all_members_are_administrators=None, photo=None, description=None, invite_link=None, - pinned_message=None, permissions=None, slow_mode_delay=None, + pinned_message=None, permissions=None, slow_mode_delay=None, sticker_set_name=None, can_set_sticker_set=None): self.id = id self.type = type @@ -859,10 +858,11 @@ class ReplyKeyboardMarkup(JsonSerializable): class KeyboardButton(Dictionaryable, JsonSerializable): - def __init__(self, text, request_contact=None, request_location=None): + def __init__(self, text, request_contact=None, request_location=None, request_poll=None): self.text = text self.request_contact = request_contact self.request_location = request_location + self.request_poll = request_poll def to_json(self): return json.dumps(self.to_dict()) @@ -873,9 +873,19 @@ class KeyboardButton(Dictionaryable, JsonSerializable): json_dict['request_contact'] = self.request_contact if self.request_location: json_dict['request_location'] = self.request_location + if self.request_poll: + json_dict['request_poll'] = self.request_poll.to_dict() return json_dict +class KeyboardButtonPollType(Dictionaryable): + def __init__(self, type=''): + self.type = type + + def to_dict(self): + return {'type': self.type} + + class InlineKeyboardMarkup(Dictionaryable, JsonSerializable): def __init__(self, row_width=3): """ diff --git a/tests/test_types.py b/tests/test_types.py index 18337ed..cc0c4cf 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -188,3 +188,11 @@ def test_json_poll_answer(): assert poll_answer.poll_id == '5895675970559410186' assert isinstance(poll_answer.user, types.User) assert poll_answer.options_ids == [1] + + +def test_KeyboardButtonPollType(): + markup = types.ReplyKeyboardMarkup() + markup.add(types.KeyboardButton('send me a poll', request_poll=types.KeyboardButtonPollType(type='quiz'))) + json_str = markup.to_json() + assert 'request_poll' in json_str + assert 'quiz' in json_str From 592dcbfedf7fc0c1f02b7fb630e4807bc98c61fc Mon Sep 17 00:00:00 2001 From: oleg Date: Tue, 12 May 2020 10:42:17 +0500 Subject: [PATCH 2/3] Add PollAnswer type; Add poll_answer_handler --- telebot/types.py | 1 + tests/test_types.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/telebot/types.py b/telebot/types.py index 9cc9162..cf3d7e9 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -117,6 +117,7 @@ class Update(JsonDeserializable): self.shipping_query = shipping_query self.pre_checkout_query = pre_checkout_query self.poll = poll + self.poll_answer = poll_answer class WebhookInfo(JsonDeserializable): diff --git a/tests/test_types.py b/tests/test_types.py index cc0c4cf..1a4abe8 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -190,6 +190,14 @@ def test_json_poll_answer(): assert poll_answer.options_ids == [1] +def test_json_poll_answer(): + json_string = r'{"poll_id": "qwerty963852741","user": {"id": 111,"is_bot": false,"first_name": "Tele","last_name": "Bot","username": "Telebot","language_code": "ru"},"option_ids": [1, 2]}' + msg = types.PollAnswer.de_json(json_string) + assert isinstance(msg.user, types.User) + assert msg.poll_id == 'qwerty963852741' + assert len(msg.option_ids) == 2 + + def test_KeyboardButtonPollType(): markup = types.ReplyKeyboardMarkup() markup.add(types.KeyboardButton('send me a poll', request_poll=types.KeyboardButtonPollType(type='quiz'))) From 27e2cbc7eab060ae953548875986a4ee654e95bb Mon Sep 17 00:00:00 2001 From: oleg Date: Mon, 18 May 2020 12:22:26 +0500 Subject: [PATCH 3/3] Remove unnecessary test --- tests/test_types.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/test_types.py b/tests/test_types.py index 1a4abe8..cc0c4cf 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -190,14 +190,6 @@ def test_json_poll_answer(): assert poll_answer.options_ids == [1] -def test_json_poll_answer(): - json_string = r'{"poll_id": "qwerty963852741","user": {"id": 111,"is_bot": false,"first_name": "Tele","last_name": "Bot","username": "Telebot","language_code": "ru"},"option_ids": [1, 2]}' - msg = types.PollAnswer.de_json(json_string) - assert isinstance(msg.user, types.User) - assert msg.poll_id == 'qwerty963852741' - assert len(msg.option_ids) == 2 - - def test_KeyboardButtonPollType(): markup = types.ReplyKeyboardMarkup() markup.add(types.KeyboardButton('send me a poll', request_poll=types.KeyboardButtonPollType(type='quiz')))