Example #1
0
    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
        )
Example #2
0
    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)