Skip to content

Commit 9c64ad2

Browse files
committed
Added the parameters question_parse_mode and question_entities to the method sendPoll.
1 parent 4bee6ff commit 9c64ad2

File tree

4 files changed

+51
-26
lines changed

4 files changed

+51
-26
lines changed

telebot/__init__.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5150,7 +5150,10 @@ def send_poll(
51505150
protect_content: Optional[bool]=None,
51515151
message_thread_id: Optional[int]=None,
51525152
reply_parameters: Optional[types.ReplyParameters]=None,
5153-
business_connection_id: Optional[str]=None) -> types.Message:
5153+
business_connection_id: Optional[str]=None,
5154+
question_parse_mode: Optional[str] = None,
5155+
question_entities: Optional[List[types.MessageEntity]] = None,
5156+
) -> types.Message:
51545157
"""
51555158
Use this method to send a native poll.
51565159
On success, the sent Message is returned.
@@ -5175,12 +5178,10 @@ def send_poll(
51755178
:param allows_multiple_answers: True, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to False
51765179
:type allows_multiple_answers: :obj:`bool`
51775180
5178-
:param correct_option_id: 0-based identifier of the correct answer option. Available only for polls in quiz mode,
5179-
defaults to None
5181+
:param correct_option_id: 0-based identifier of the correct answer option. Available only for polls in quiz mode, defaults to None
51805182
:type correct_option_id: :obj:`int`
51815183
5182-
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll,
5183-
0-200 characters with at most 2 line feeds after entities parsing
5184+
:param explanation: Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities parsing
51845185
:type explanation: :obj:`str`
51855186
51865187
:param explanation_parse_mode: Mode for parsing entities in the explanation. See formatting options for more details.
@@ -5204,15 +5205,13 @@ def send_poll(
52045205
:param allow_sending_without_reply: deprecated. Pass True, if the message should be sent even if the specified replied-to message is not found
52055206
:type allow_sending_without_reply: :obj:`bool`
52065207
5207-
:param reply_markup: Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard,
5208-
instructions to remove reply keyboard or to force a reply from the user.
5208+
:param reply_markup: Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user.
52095209
:type reply_markup: :obj:`InlineKeyboardMarkup` | :obj:`ReplyKeyboardMarkup` | :obj:`ReplyKeyboardRemove` | :obj:`ForceReply`
52105210
52115211
:param timeout: Timeout in seconds for waiting for a response from the user.
52125212
:type timeout: :obj:`int`
52135213
5214-
:param explanation_entities: A JSON-serialized list of special entities that appear in the explanation,
5215-
which can be specified instead of parse_mode
5214+
:param explanation_entities: A JSON-serialized list of special entities that appear in the explanation, which can be specified instead of parse_mode
52165215
:type explanation_entities: :obj:`list` of :obj:`MessageEntity`
52175216
52185217
:param protect_content: Protects the contents of the sent message from forwarding and saving
@@ -5227,6 +5226,12 @@ def send_poll(
52275226
:param business_connection_id: Identifier of the business connection to use for the poll
52285227
:type business_connection_id: :obj:`str`
52295228
5229+
:param question_parse_mode: Mode for parsing entities in the question. See formatting options for more details. Currently, only custom emoji entities are allowed
5230+
:type question_parse_mode: :obj:`str`
5231+
5232+
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of question_parse_mode
5233+
:type question_entities: :obj:`list` of :obj:`MessageEntity`
5234+
52305235
:return: On success, the sent Message is returned.
52315236
:rtype: :obj:`types.Message`
52325237
"""
@@ -5258,6 +5263,7 @@ def send_poll(
52585263
raise RuntimeError("The send_poll signature was changed, please see send_poll function details.")
52595264

52605265
explanation_parse_mode = self.parse_mode if (explanation_parse_mode is None) else explanation_parse_mode
5266+
question_parse_mode = self.parse_mode if (question_parse_mode is None) else question_parse_mode
52615267

52625268
return types.Message.de_json(
52635269
apihelper.send_poll(
@@ -5268,7 +5274,8 @@ def send_poll(
52685274
close_date=close_date, is_closed=is_closed, disable_notification=disable_notification,
52695275
reply_markup=reply_markup, timeout=timeout, explanation_entities=explanation_entities,
52705276
protect_content=protect_content, message_thread_id=message_thread_id,
5271-
reply_parameters=reply_parameters, business_connection_id=business_connection_id)
5277+
reply_parameters=reply_parameters, business_connection_id=business_connection_id,
5278+
question_parse_mode=question_parse_mode, question_entities=question_entities)
52725279
)
52735280

52745281

telebot/apihelper.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,8 +1818,8 @@ def send_poll(
18181818
question, options,
18191819
is_anonymous = None, type = None, allows_multiple_answers = None, correct_option_id = None, explanation = None,
18201820
explanation_parse_mode=None, open_period = None, close_date = None, is_closed = None, disable_notification=False,
1821-
reply_markup=None, timeout=None, explanation_entities=None, protect_content=None, message_thread_id=None, reply_parameters=None,
1822-
business_connection_id=None):
1821+
reply_markup=None, timeout=None, explanation_entities=None, protect_content=None, message_thread_id=None,
1822+
reply_parameters=None, business_connection_id=None, question_parse_mode=None, question_entities=None):
18231823
method_url = r'sendPoll'
18241824
payload = {
18251825
'chat_id': str(chat_id),
@@ -1828,19 +1828,19 @@ def send_poll(
18281828

18291829
if is_anonymous is not None:
18301830
payload['is_anonymous'] = is_anonymous
1831-
if type is not None:
1831+
if type:
18321832
payload['type'] = type
18331833
if allows_multiple_answers is not None:
18341834
payload['allows_multiple_answers'] = allows_multiple_answers
18351835
if correct_option_id is not None:
18361836
payload['correct_option_id'] = correct_option_id
1837-
if explanation is not None:
1837+
if explanation:
18381838
payload['explanation'] = explanation
1839-
if explanation_parse_mode is not None:
1839+
if explanation_parse_mode:
18401840
payload['explanation_parse_mode'] = explanation_parse_mode
1841-
if open_period is not None:
1841+
if open_period:
18421842
payload['open_period'] = open_period
1843-
if close_date is not None:
1843+
if close_date:
18441844
if isinstance(close_date, datetime):
18451845
payload['close_date'] = close_date.timestamp()
18461846
else:
@@ -1849,21 +1849,24 @@ def send_poll(
18491849
payload['is_closed'] = is_closed
18501850
if disable_notification:
18511851
payload['disable_notification'] = disable_notification
1852-
if reply_markup is not None:
1852+
if reply_markup:
18531853
payload['reply_markup'] = _convert_markup(reply_markup)
18541854
if timeout:
18551855
payload['timeout'] = timeout
18561856
if explanation_entities:
1857-
payload['explanation_entities'] = json.dumps(
1858-
types.MessageEntity.to_list_of_dicts(explanation_entities))
1857+
payload['explanation_entities'] = json.dumps(types.MessageEntity.to_list_of_dicts(explanation_entities))
18591858
if protect_content:
18601859
payload['protect_content'] = protect_content
18611860
if message_thread_id:
18621861
payload['message_thread_id'] = message_thread_id
1863-
if reply_parameters is not None:
1862+
if reply_parameters:
18641863
payload['reply_parameters'] = reply_parameters.to_json()
1865-
if business_connection_id is not None:
1864+
if business_connection_id:
18661865
payload['business_connection_id'] = business_connection_id
1866+
if question_parse_mode:
1867+
payload['question_parse_mode'] = question_parse_mode
1868+
if question_entities:
1869+
payload['question_entities'] = json.dumps(types.MessageEntity.to_list_of_dicts(question_entities))
18671870
return _make_request(token, method_url, params=payload)
18681871

18691872
def create_forum_topic(token, chat_id, name, icon_color=None, icon_custom_emoji_id=None):

telebot/async_telebot.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6495,7 +6495,10 @@ async def send_poll(
64956495
protect_content: Optional[bool]=None,
64966496
message_thread_id: Optional[int]=None,
64976497
reply_parameters: Optional[types.ReplyParameters]=None,
6498-
business_connection_id: Optional[str]=None) -> types.Message:
6498+
business_connection_id: Optional[str]=None,
6499+
question_parse_mode: Optional[str] = None,
6500+
question_entities: Optional[List[types.MessageEntity]] = None,
6501+
) -> types.Message:
64996502
"""
65006503
Use this method to send a native poll.
65016504
On success, the sent Message is returned.
@@ -6572,13 +6575,20 @@ async def send_poll(
65726575
:param business_connection_id: Identifier of the business connection to send the message through
65736576
:type business_connection_id: :obj:`str`
65746577
6578+
:param question_parse_mode: Mode for parsing entities in the question. See formatting options for more details. Currently, only custom emoji entities are allowed
6579+
:type question_parse_mode: :obj:`str`
6580+
6581+
:param question_entities: A JSON-serialized list of special entities that appear in the poll question. It can be specified instead of question_parse_mode
6582+
:type question_entities: :obj:`list` of :obj:`MessageEntity`
6583+
65756584
:return: On success, the sent Message is returned.
65766585
:rtype: :obj:`types.Message`
65776586
"""
65786587
disable_notification = self.disable_notification if (disable_notification is None) else disable_notification
65796588
protect_content = self.protect_content if (protect_content is None) else protect_content
65806589

65816590
explanation_parse_mode = self.parse_mode if (explanation_parse_mode is None) else explanation_parse_mode
6591+
question_parse_mode = self.parse_mode if (question_parse_mode is None) else question_parse_mode
65826592

65836593
if allow_sending_without_reply is not None:
65846594
logger.warning("The parameter 'allow_sending_without_reply' is deprecated. Use 'reply_parameters' instead.")
@@ -6610,7 +6620,8 @@ async def send_poll(
66106620
is_anonymous, type, allows_multiple_answers, correct_option_id,
66116621
explanation, explanation_parse_mode, open_period, close_date, is_closed,
66126622
disable_notification,
6613-
reply_markup, timeout, explanation_entities, protect_content, message_thread_id, reply_parameters, business_connection_id))
6623+
reply_markup, timeout, explanation_entities, protect_content, message_thread_id, reply_parameters,
6624+
business_connection_id, question_parse_mode=question_parse_mode, question_entities=question_entities))
66146625

66156626
async def stop_poll(
66166627
self, chat_id: Union[int, str], message_id: int,

telebot/asyncio_helper.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,7 +1803,8 @@ async def send_poll(
18031803
is_anonymous = None, type = None, allows_multiple_answers = None, correct_option_id = None,
18041804
explanation = None, explanation_parse_mode=None, open_period = None, close_date = None, is_closed = None,
18051805
disable_notification=False,
1806-
reply_markup=None, timeout=None, explanation_entities=None, protect_content=None, message_thread_id=None,reply_parameters=None,business_connection_id=None):
1806+
reply_markup=None, timeout=None, explanation_entities=None, protect_content=None, message_thread_id=None,
1807+
reply_parameters=None,business_connection_id=None, question_parse_mode=None, question_entities=None):
18071808
method_url = r'sendPoll'
18081809
payload = {
18091810
'chat_id': str(chat_id),
@@ -1831,7 +1832,6 @@ async def send_poll(
18311832
payload['close_date'] = close_date
18321833
if is_closed is not None:
18331834
payload['is_closed'] = is_closed
1834-
18351835
if disable_notification:
18361836
payload['disable_notification'] = disable_notification
18371837
if reply_parameters is not None:
@@ -1849,6 +1849,10 @@ async def send_poll(
18491849
payload['message_thread_id'] = message_thread_id
18501850
if business_connection_id:
18511851
payload['business_connection_id'] = business_connection_id
1852+
if question_parse_mode:
1853+
payload['question_parse_mode'] = question_parse_mode
1854+
if question_entities:
1855+
payload['question_entities'] = json.dumps(types.MessageEntity.to_list_of_dicts(question_entities))
18521856
return await _process_request(token, method_url, params=payload)
18531857

18541858

0 commit comments

Comments
 (0)