Update Poll object for Polls 2.0

This commit is contained in:
Dan 2020-02-01 15:39:28 +01:00
parent aa1c0e226e
commit af2035951a

View File

@ -38,11 +38,20 @@ class Poll(Object, Update):
options (List of :obj:`PollOption`):
List of poll options.
total_voter_count (``int``):
Total number of users that voted in the poll.
is_closed (``bool``):
True, if the poll is closed.
total_voters (``int``):
Total count of voters for this poll.
is_anonymous (``bool``, *optional*):
True, if the poll is anonymous
type (``str``, *optional*):
Poll type, currently can be "regular" or "quiz".
allows_multiple_answers (``bool``, *optional*):
True, if the poll allows multiple answers.
chosen_option (``int``, *optional*):
Index of your chosen option (0-9), None in case you haven't voted yet.
@ -55,8 +64,12 @@ class Poll(Object, Update):
id: str,
question: str,
options: List[PollOption],
total_voter_count: int,
is_closed: bool,
total_voters: int,
is_anonymous: bool = None,
type: str = None,
allows_multiple_answers: bool = None,
# correct_option_id: int,
chosen_option: int = None
):
super().__init__(client)
@ -64,15 +77,18 @@ class Poll(Object, Update):
self.id = id
self.question = question
self.options = options
self.total_voter_count = total_voter_count
self.is_closed = is_closed
self.total_voters = total_voters
self.is_anonymous = is_anonymous
self.type = type
self.allows_multiple_answers = allows_multiple_answers
# self.correct_option_id = correct_option_id
self.chosen_option = chosen_option
@staticmethod
def _parse(client, media_poll: Union[types.MessageMediaPoll, types.UpdateMessagePoll]) -> "Poll":
poll = media_poll.poll
results = media_poll.results.results
total_voters = media_poll.results.total_voters
poll = media_poll.poll # type: types.Poll
results = media_poll.results.results # type: types.PollResults
chosen_option = None
options = []
@ -99,8 +115,11 @@ class Poll(Object, Update):
id=str(poll.id),
question=poll.question,
options=options,
total_voter_count=media_poll.results.total_voters,
is_closed=poll.closed,
total_voters=total_voters,
is_anonymous=not poll.public_voters,
type="quiz" if poll.quiz else "regular",
allows_multiple_answers=poll.multiple_choice,
chosen_option=chosen_option,
client=client
)
@ -131,8 +150,8 @@ class Poll(Object, Update):
id=str(update.poll_id),
question="",
options=options,
total_voter_count=update.results.total_voters,
is_closed=False,
total_voters=update.results.total_voters,
chosen_option=chosen_option,
client=client
)