@@ -77,6 +77,9 @@ class Poll(Object, Update):
77
77
78
78
close_date (:py:obj:`~datetime.datetime`, *optional*):
79
79
Point in time when the poll will be automatically closed.
80
+
81
+ voter (:obj:`~pyrogram.types.User`, *optional*):
82
+ The user that voted in the poll.
80
83
"""
81
84
82
85
def __init__ (
@@ -97,7 +100,8 @@ def __init__(
97
100
explanation : Optional [str ] = None ,
98
101
explanation_entities : Optional [List ["types.MessageEntity" ]] = None ,
99
102
open_period : Optional [int ] = None ,
100
- close_date : Optional [datetime ] = None
103
+ close_date : Optional [datetime ] = None ,
104
+ voter : Optional ["types.User" ] = None
101
105
):
102
106
super ().__init__ (client )
103
107
@@ -116,6 +120,7 @@ def __init__(
116
120
self .explanation_entities = explanation_entities
117
121
self .open_period = open_period
118
122
self .close_date = close_date
123
+ self .voter = voter
119
124
120
125
@staticmethod
121
126
def _parse (client , media_poll : Union ["raw.types.MessageMediaPoll" , "raw.types.UpdateMessagePoll" ]) -> "Poll" :
@@ -195,38 +200,57 @@ def _parse(client, media_poll: Union["raw.types.MessageMediaPoll", "raw.types.Up
195
200
)
196
201
197
202
@staticmethod
198
- def _parse_update (client , update : "raw.types.UpdateMessagePoll" ):
199
- if update .poll is not None :
200
- return Poll ._parse (client , update )
203
+ def _parse_update (client , update : Union ["raw.types.UpdateMessagePoll" , "raw.types.UpdateMessagePollVote" ], users : dict ):
204
+ if isinstance (update , raw .types .UpdateMessagePoll ):
205
+ if update .poll is not None :
206
+ return Poll ._parse (client , update )
201
207
202
- results = update .results .results
203
- chosen_option_id = None
204
- correct_option_id = None
205
- options = []
208
+ results = update .results .results
209
+ chosen_option_id = None
210
+ correct_option_id = None
211
+ options = []
206
212
207
- for i , result in enumerate (results ):
208
- if result .chosen :
209
- chosen_option_id = i
213
+ for i , result in enumerate (results ):
214
+ if result .chosen :
215
+ chosen_option_id = i
210
216
211
- if result .correct :
212
- correct_option_id = i
217
+ if result .correct :
218
+ correct_option_id = i
213
219
214
- options .append (
215
- types .PollOption (
216
- text = "" ,
217
- voter_count = result .voters ,
218
- data = result .option ,
219
- client = client
220
+ options .append (
221
+ types .PollOption (
222
+ text = "" ,
223
+ voter_count = result .voters ,
224
+ data = result .option ,
225
+ client = client
226
+ )
220
227
)
228
+
229
+ return Poll (
230
+ id = str (update .poll_id ),
231
+ question = "" ,
232
+ options = options ,
233
+ total_voter_count = update .results .total_voters ,
234
+ is_closed = False ,
235
+ chosen_option_id = chosen_option_id ,
236
+ correct_option_id = correct_option_id ,
237
+ client = client
221
238
)
222
239
223
- return Poll (
224
- id = str (update .poll_id ),
225
- question = "" ,
226
- options = options ,
227
- total_voter_count = update .results .total_voters ,
228
- is_closed = False ,
229
- chosen_option_id = chosen_option_id ,
230
- correct_option_id = correct_option_id ,
231
- client = client
232
- )
240
+ if isinstance (update , raw .types .UpdateMessagePollVote ):
241
+ return Poll (
242
+ id = str (update .poll_id ),
243
+ question = "" ,
244
+ options = [
245
+ types .PollOption (
246
+ text = "" ,
247
+ voter_count = None ,
248
+ data = option ,
249
+ client = client
250
+ ) for option in update .options
251
+ ],
252
+ total_voter_count = None ,
253
+ is_closed = False ,
254
+ voter = types .User ._parse (client , users [update .peer .user_id ]),
255
+ client = client
256
+ )
0 commit comments