# telegram.Poll

class telegram.Poll(id, question, options, total_voter_count, is_closed, is_anonymous, type, allows_multiple_answers, correct_option_id=None, explanation=None, explanation_entities=None, open_period=None, close_date=None, **_kwargs)

  Bases: `telegram.base.TelegramObject`

  This object contains information about a poll.

  Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their `id` is equal.

  id

    Unique poll identifier.

    Type

      `str`

  question

    Poll question, 1-300 characters.

    Type

      `str`

  options

    List of poll options.

    Type

      List[`PollOption`]

  total_voter_count

    Total number of users that voted in the poll.

    Type

      `int`

  is_closed

    `True`, if the poll is closed.

    Type

      `bool`

  is_anonymous

    `True`, if the poll is anonymous.

    Type

      `bool`

  type

    Poll type, currently can be `REGULAR` or `QUIZ`.

    Type

      `str`

  allows_multiple_answers

    `True`, if the poll allows multiple answers.

    Type

      `bool`

  correct_option_id

    Optional. Identifier of the correct answer option.

    Type

      `int`

  explanation

    Optional. Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll.

    Type

      `str`

  explanation_entities

    Optional. Special entities like usernames, URLs, bot commands, etc. that appear in the `explanation`.

    Type

      List[`telegram.MessageEntity`]

  open_period

    Optional. Amount of time in seconds the poll will be active after creation.

    Type

      `int`

  close_date

    Optional. Point in time when the poll will be automatically closed.

    Type

      `datetime.datetime`

  Parameters

    - id (`str`) – Unique poll identifier.

    - question (`str`) – Poll question, 1-300 characters.

    - options (List[`PollOption`]) – List of poll options.

    - is_closed (`bool`) – `True`, if the poll is closed.

    - is_anonymous (`bool`) – `True`, if the poll is anonymous.

    - type (`str`) – Poll type, currently can be `REGULAR` or `QUIZ`.

    - allows_multiple_answers (`bool`) – `True`, if the poll allows multiple answers.

    - correct_option_id (`int`, optional) – 0-based identifier of the correct answer option. Available only for polls in the quiz mode, which are closed, or was sent (not forwarded) by the bot or to the private chat with the bot.

    - explanation (`str`, optional) – 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.

    - explanation_entities (List[`telegram.MessageEntity`], optional) – Special entities like usernames, URLs, bot commands, etc. that appear in the `explanation`.

    - open_period (`int`, optional) – Amount of time in seconds the poll will be active after creation.

    - close_date (`datetime.datetime`, optional) – Point in time (Unix timestamp) when the poll will be automatically closed. Converted to `datetime.datetime`.

  MAX_OPTION_LENGTH = 100

    `telegram.constants.MAX_POLL_OPTION_LENGTH`

  MAX_QUESTION_LENGTH = 300

    `telegram.constants.MAX_POLL_QUESTION_LENGTH`

  QUIZ = 'quiz'

    `telegram.constants.POLL_QUIZ`

  REGULAR = 'regular'

    `telegram.constants.POLL_REGULAR`

  classmethod de_json(data, bot)

    See `telegram.TelegramObject.de_json()`.

  parse_explanation_entities(types=None)

    Returns a `dict` that maps `telegram.MessageEntity` to `str`. It contains entities from this polls explanation filtered by their `type` attribute as the key, and the text that each entity belongs to as the value of the `dict`.

    Note

    This method should always be used instead of the `explanation_entities` attribute, since it calculates the correct substring from the message text based on UTF-16 codepoints. See `parse_explanation_entity` for more info.

    Parameters

      types (List[`str`], optional) – List of `MessageEntity` types as strings. If the `type` attribute of an entity is contained in this list, it will be returned. Defaults to `telegram.MessageEntity.ALL_TYPES`.

    Returns

      A dictionary of entities mapped to the text that belongs to them, calculated based on UTF-16 codepoints.

    Return type

      Dict[`telegram.MessageEntity`, `str`]

  parse_explanation_entity(entity)

    Returns the text from a given `telegram.MessageEntity`.

    Note

    This method is present because Telegram calculates the offset and length in UTF-16 codepoint pairs, which some versions of Python don’t handle automatically. (That is, you can’t just slice `Message.text` with the offset and length.)

    Parameters

      entity (`telegram.MessageEntity`) – The entity to extract the text from. It must be an entity that belongs to this message.

    Returns

      The text of the given entity.

    Return type

      `str`

    Raises

      RuntimeError – If the poll has no explanation.

  to_dict()

    See `telegram.TelegramObject.to_dict()`.