mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2026-01-03 14:04:51 +00:00
pyrofork: Add recent_voters field to Poll
Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
parent
defda31c28
commit
30f5ae2994
6 changed files with 30 additions and 9 deletions
|
|
@ -171,7 +171,7 @@ class Dispatcher:
|
||||||
|
|
||||||
async def poll_parser(update, users, chats):
|
async def poll_parser(update, users, chats):
|
||||||
return (
|
return (
|
||||||
pyrogram.types.Poll._parse_update(self.client, update),
|
await pyrogram.types.Poll._parse_update(self.client, update, users),
|
||||||
PollHandler
|
PollHandler
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,4 +60,4 @@ class RetractVote:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return types.Poll._parse(self, r.updates[0])
|
return await types.Poll._parse(self, r.updates[0], r.users)
|
||||||
|
|
|
||||||
|
|
@ -87,4 +87,4 @@ class StopPoll:
|
||||||
else:
|
else:
|
||||||
r = await self.invoke(rpc)
|
r = await self.invoke(rpc)
|
||||||
|
|
||||||
return types.Poll._parse(self, r.updates[0])
|
return await types.Poll._parse(self, r.updates[0], r.users)
|
||||||
|
|
|
||||||
|
|
@ -68,4 +68,4 @@ class VotePoll:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return types.Poll._parse(self, r.updates[0])
|
return await types.Poll._parse(self, r.updates[0], r.users)
|
||||||
|
|
|
||||||
|
|
@ -1086,7 +1086,7 @@ class Message(Object, Update):
|
||||||
else:
|
else:
|
||||||
media = None
|
media = None
|
||||||
elif isinstance(media, raw.types.MessageMediaPoll):
|
elif isinstance(media, raw.types.MessageMediaPoll):
|
||||||
poll = types.Poll._parse(client, media)
|
poll = await types.Poll._parse(client, media, users)
|
||||||
media_type = enums.MessageMediaType.POLL
|
media_type = enums.MessageMediaType.POLL
|
||||||
elif isinstance(media, raw.types.MessageMediaDice):
|
elif isinstance(media, raw.types.MessageMediaDice):
|
||||||
dice = types.Dice._parse(client, media)
|
dice = types.Dice._parse(client, media)
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,9 @@ class Poll(Object, Update):
|
||||||
|
|
||||||
close_date (:py:obj:`~datetime.datetime`, *optional*):
|
close_date (:py:obj:`~datetime.datetime`, *optional*):
|
||||||
Point in time when the poll will be automatically closed.
|
Point in time when the poll will be automatically closed.
|
||||||
|
|
||||||
|
recent_voters (List of :obj:`~pyrogram.types.User`, *optional*):
|
||||||
|
List of user whos recently vote.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
|
@ -98,7 +101,8 @@ class Poll(Object, Update):
|
||||||
explanation: Optional[str] = None,
|
explanation: Optional[str] = None,
|
||||||
explanation_entities: Optional[List["types.MessageEntity"]] = None,
|
explanation_entities: Optional[List["types.MessageEntity"]] = None,
|
||||||
open_period: Optional[int] = None,
|
open_period: Optional[int] = None,
|
||||||
close_date: Optional[datetime] = None
|
close_date: Optional[datetime] = None,
|
||||||
|
recent_voters: List["types.User"] = None
|
||||||
):
|
):
|
||||||
super().__init__(client)
|
super().__init__(client)
|
||||||
|
|
||||||
|
|
@ -117,9 +121,14 @@ class Poll(Object, Update):
|
||||||
self.explanation_entities = explanation_entities
|
self.explanation_entities = explanation_entities
|
||||||
self.open_period = open_period
|
self.open_period = open_period
|
||||||
self.close_date = close_date
|
self.close_date = close_date
|
||||||
|
self.recent_voters = recent_voters
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse(client, media_poll: Union["raw.types.MessageMediaPoll", "raw.types.UpdateMessagePoll"]) -> "Poll":
|
async def _parse(
|
||||||
|
client,
|
||||||
|
media_poll: Union["raw.types.MessageMediaPoll", "raw.types.UpdateMessagePoll"],
|
||||||
|
users: List["raw.base.User"]
|
||||||
|
) -> "Poll":
|
||||||
poll: raw.types.Poll = media_poll.poll
|
poll: raw.types.Poll = media_poll.poll
|
||||||
poll_results: raw.types.PollResults = media_poll.results
|
poll_results: raw.types.PollResults = media_poll.results
|
||||||
results: List[raw.types.PollAnswerVoters] = poll_results.results
|
results: List[raw.types.PollAnswerVoters] = poll_results.results
|
||||||
|
|
@ -176,13 +185,21 @@ class Poll(Object, Update):
|
||||||
] if poll_results.solution_entities else None,
|
] if poll_results.solution_entities else None,
|
||||||
open_period=poll.close_period,
|
open_period=poll.close_period,
|
||||||
close_date=utils.timestamp_to_datetime(poll.close_date),
|
close_date=utils.timestamp_to_datetime(poll.close_date),
|
||||||
|
recent_voters=[
|
||||||
|
await client.get_users(user.user_id)
|
||||||
|
for user in poll_results.recent_voters
|
||||||
|
] if poll_results.recent_voters else None,
|
||||||
client=client
|
client=client
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _parse_update(client, update: "raw.types.UpdateMessagePoll"):
|
async def _parse_update(
|
||||||
|
client,
|
||||||
|
update: "raw.types.UpdateMessagePoll",
|
||||||
|
users: List["raw.base.User"]
|
||||||
|
) -> "Poll":
|
||||||
if update.poll is not None:
|
if update.poll is not None:
|
||||||
return Poll._parse(client, update)
|
return await Poll._parse(client, update, users)
|
||||||
|
|
||||||
results = update.results.results
|
results = update.results.results
|
||||||
chosen_option_id = None
|
chosen_option_id = None
|
||||||
|
|
@ -213,6 +230,10 @@ class Poll(Object, Update):
|
||||||
is_closed=False,
|
is_closed=False,
|
||||||
chosen_option_id=chosen_option_id,
|
chosen_option_id=chosen_option_id,
|
||||||
correct_option_id=correct_option_id,
|
correct_option_id=correct_option_id,
|
||||||
|
recent_voters=[
|
||||||
|
types.User._parse(client, users.get(user.user_id, None))
|
||||||
|
for user in update.results.recent_voters
|
||||||
|
] if update.results.recent_voters else None,
|
||||||
client=client
|
client=client
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue