diff --git a/telethon/client/chats.py b/telethon/client/chats.py index 4ccae265..1402ae7e 100644 --- a/telethon/client/chats.py +++ b/telethon/client/chats.py @@ -1135,11 +1135,16 @@ class ChatMethods: user (`entity`, optional): The user to kick. + Returns + Returns the service `Message ` + produced about a user being kicked, if any. + Example .. code-block:: python - # Kick some user from some chat - await client.kick_participant(chat, user) + # Kick some user from some chat, and deleting the service message + msg = await client.kick_participant(chat, user) + await msg.delete() # Leaving chat await client.kick_participant(chat, 'me') @@ -1151,15 +1156,18 @@ class ChatMethods: ty = helpers._entity_type(entity) if ty == helpers._EntityType.CHAT: - await self(functions.messages.DeleteChatUserRequest(entity.chat_id, user)) + resp = await self(functions.messages.DeleteChatUserRequest(entity.chat_id, user)) elif ty == helpers._EntityType.CHANNEL: if isinstance(user, types.InputPeerSelf): - await self(functions.channels.LeaveChannelRequest(entity)) + # Despite no longer being in the channel, the account still + # seems to get the service message. + resp = await self(functions.channels.LeaveChannelRequest(entity)) else: - await self(functions.channels.EditBannedRequest( + resp = await self(functions.channels.EditBannedRequest( channel=entity, user_id=user, - banned_rights=types.ChatBannedRights(until_date=None, view_messages=True) + banned_rights=types.ChatBannedRights( + until_date=None, view_messages=True) )) await asyncio.sleep(0.5) await self(functions.channels.EditBannedRequest( @@ -1170,6 +1178,8 @@ class ChatMethods: else: raise ValueError('You must pass either a channel or a chat') + return self._get_response_message(None, resp, entity) + async def get_permissions( self: 'TelegramClient', entity: 'hints.EntityLike', diff --git a/telethon/client/messageparse.py b/telethon/client/messageparse.py index 664bd5b2..aac9c3f0 100644 --- a/telethon/client/messageparse.py +++ b/telethon/client/messageparse.py @@ -67,7 +67,7 @@ class MessageParseMethods: entities[i].offset, entities[i].length, await self.get_input_entity(user) ) - return True + return True except (ValueError, TypeError): return False @@ -134,7 +134,7 @@ class MessageParseMethods: # Pinning a message with `updatePinnedMessage` seems to # always produce a service message we can't map so return - # it directly. + # it directly. The same happens for kicking users. # # It could also be a list (e.g. when sending albums). #