diff --git a/telethon/client/chats.py b/telethon/client/chats.py index 64f60d5d..e6b2fc25 100644 --- a/telethon/client/chats.py +++ b/telethon/client/chats.py @@ -218,8 +218,10 @@ class _ParticipantsIter(RequestIter): self.requests.offset += len(participants.participants) users = {user.id: user for user in participants.users} for participant in participants.participants: - - if isinstance(participant, types.ChannelParticipantBanned): + if isinstance(participant, types.ChannelParticipantLeft): + # See issue #3231 to learn why this is ignored. + continue + elif isinstance(participant, types.ChannelParticipantBanned): if not isinstance(participant.peer, types.PeerUser): # May have the entire channel banned. See #3105. continue diff --git a/telethon/tl/custom/message.py b/telethon/tl/custom/message.py index 7b03a054..a0b9c297 100644 --- a/telethon/tl/custom/message.py +++ b/telethon/tl/custom/message.py @@ -176,8 +176,7 @@ class Message(ChatGetter, SenderGetter, TLObject): self, id: int, peer_id: types.TypePeer, date: Optional[datetime]=None, message: Optional[str]=None, - # Copied from Message.__init__ signature - out: Optional[bool]=None, mentioned: Optional[bool]=None, media_unread: Optional[bool]=None, silent: Optional[bool]=None, post: Optional[bool]=None, from_scheduled: Optional[bool]=None, legacy: Optional[bool]=None, edit_hide: Optional[bool]=None, pinned: Optional[bool]=None, noforwards: Optional[bool]=None, invert_media: Optional[bool]=None, offline: Optional[bool]=None, video_processing_pending: Optional[bool]=None, from_id: Optional[types.TypePeer]=None, from_boosts_applied: Optional[int]=None, saved_peer_id: Optional[types.TypePeer]=None, fwd_from: Optional[types.TypeMessageFwdHeader]=None, via_bot_id: Optional[int]=None, via_business_bot_id: Optional[int]=None, reply_to: Optional[types.TypeMessageReplyHeader]=None, media: Optional[types.TypeMessageMedia]=None, reply_markup: Optional[types.TypeReplyMarkup]=None, entities: Optional[List[types.TypeMessageEntity]]=None, views: Optional[int]=None, forwards: Optional[int]=None, replies: Optional[types.TypeMessageReplies]=None, edit_date: Optional[datetime]=None, post_author: Optional[str]=None, grouped_id: Optional[int]=None, reactions: Optional[types.TypeMessageReactions]=None, restriction_reason: Optional[List[types.TypeRestrictionReason]]=None, ttl_period: Optional[int]=None, quick_reply_shortcut_id: Optional[int]=None, effect: Optional[int]=None, factcheck: Optional[types.TypeFactCheck]=None, report_delivery_until_date: Optional[datetime]=None, paid_message_stars: Optional[int]=None, + out: Optional[bool]=None, mentioned: Optional[bool]=None, media_unread: Optional[bool]=None, silent: Optional[bool]=None, post: Optional[bool]=None, from_scheduled: Optional[bool]=None, legacy: Optional[bool]=None, edit_hide: Optional[bool]=None, pinned: Optional[bool]=None, noforwards: Optional[bool]=None, invert_media: Optional[bool]=None, offline: Optional[bool]=None, video_processing_pending: Optional[bool]=None, from_id: Optional[types.TypePeer]=None, from_boosts_applied: Optional[int]=None, saved_peer_id: Optional[types.TypePeer]=None, fwd_from: Optional[types.TypeMessageFwdHeader]=None, via_bot_id: Optional[int]=None, via_business_bot_id: Optional[int]=None, reply_to: Optional[types.TypeMessageReplyHeader]=None, media: Optional[types.TypeMessageMedia]=None, reply_markup: Optional[types.TypeReplyMarkup]=None, entities: Optional[List[types.TypeMessageEntity]]=None, views: Optional[int]=None, forwards: Optional[int]=None, replies: Optional[types.TypeMessageReplies]=None, edit_date: Optional[datetime]=None, post_author: Optional[str]=None, grouped_id: Optional[int]=None, reactions: Optional[types.TypeMessageReactions]=None, restriction_reason: Optional[List[types.TypeRestrictionReason]]=None, ttl_period: Optional[int]=None, quick_reply_shortcut_id: Optional[int]=None, effect: Optional[int]=None, factcheck: Optional[types.TypeFactCheck]=None, report_delivery_until_date: Optional[datetime]=None, paid_message_stars: Optional[int]=None, # Copied from MessageService.__init__ signature action: Optional[types.TypeMessageAction]=None, reactions_are_possible: Optional[bool]=None ): diff --git a/telethon/utils.py b/telethon/utils.py index 8f21df17..84a9cd5a 100644 --- a/telethon/utils.py +++ b/telethon/utils.py @@ -499,6 +499,14 @@ def get_input_media( if isinstance(media, types.MessageMediaGeo): return types.InputMediaGeoPoint(geo_point=get_input_geo(media.geo)) + if isinstance(media, types.MessageMediaGeoLive): + return types.InputMediaGeoLive( + geo_point=get_input_geo(media.geo), + period=media.period, + heading=media.heading, + proximity_notification_radius=media.proximity_notification_radius, + ) + if isinstance(media, types.MessageMediaVenue): return types.InputMediaVenue( geo_point=get_input_geo(media.geo),