def _parse_update(client, update: "raw.types.UpdateMessagePoll"): if update.poll is not None: return Poll._parse(client, update) results = update.results.results chosen_option = None options = [] for i, result in enumerate(results): if result.chosen: chosen_option = i options.append( types.PollOption( text="", voter_count=result.voters, data=result.option, client=client ) ) return Poll( id=str(update.poll_id), question="", options=options, total_voter_count=update.results.total_voters, is_closed=False, chosen_option=chosen_option, client=client )
def _parse( client, media_poll: Union["raw.types.MessageMediaPoll", "raw.types.UpdateMessagePoll"] ) -> "Poll": poll = media_poll.poll # type: raw.types.Poll results = media_poll.results.results chosen_option = None options = [] for i, answer in enumerate(poll.answers): voter_count = 0 if results: result = results[i] voter_count = result.voters if result.chosen: chosen_option = i options.append( types.PollOption(text=answer.text, voter_count=voter_count, data=answer.option, client=client)) return Poll(id=str(poll.id), question=poll.question, options=options, total_voter_count=media_poll.results.total_voters, is_closed=poll.closed, 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)