mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-07-16 11:02:19 +03:00
Create new client.delete_dialog method
This commit is contained in:
parent
e4158acd08
commit
0d64fd98f7
|
@ -323,6 +323,55 @@ class DialogMethods(UserMethods):
|
||||||
for x, y in zip(entities, folder)
|
for x, y in zip(entities, folder)
|
||||||
]))
|
]))
|
||||||
|
|
||||||
|
async def delete_dialog(
|
||||||
|
self: 'TelegramClient',
|
||||||
|
entity: 'hints.EntityLike',
|
||||||
|
*,
|
||||||
|
revoke: bool = False
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Deletes a dialog (leaves a chat or channel).
|
||||||
|
|
||||||
|
See also `Dialog.delete() <telethon.tl.custom.dialog.Dialog.delete>`.
|
||||||
|
|
||||||
|
Arguments
|
||||||
|
entity (entities):
|
||||||
|
The entity of the dialog to delete. If it's a chat or
|
||||||
|
channel, you will leave it. Note that the chat itself
|
||||||
|
is not deleted, only the dialog, because you left it.
|
||||||
|
|
||||||
|
revoke (`bool`, optional):
|
||||||
|
On private chats, you may revoke the messages from
|
||||||
|
the other peer too. By default, it's ``False``. Set
|
||||||
|
it to ``True`` to delete the history for both.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
The :tl:`Updates` object that the request produces,
|
||||||
|
or nothing for private conversations.
|
||||||
|
|
||||||
|
Example
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Deleting the first dialog
|
||||||
|
dialogs = client.get_dialogs(5)
|
||||||
|
client.delete_dialog(dialogs[0])
|
||||||
|
|
||||||
|
# Leaving a channel by username
|
||||||
|
client.delete_dialog('username')
|
||||||
|
"""
|
||||||
|
entity = await self.get_input_entity(entity)
|
||||||
|
if isinstance(entity, types.InputPeerChannel):
|
||||||
|
return await self(functions.channels.LeaveChannelRequest(entity))
|
||||||
|
|
||||||
|
if isinstance(entity, types.InputPeerChat):
|
||||||
|
result = await self(functions.messages.DeleteChatUserRequest(
|
||||||
|
entity.chat_id, types.InputUserSelf()))
|
||||||
|
else:
|
||||||
|
result = None
|
||||||
|
|
||||||
|
await self(functions.messages.DeleteHistoryRequest(entity, 0, revoke=revoke))
|
||||||
|
return result
|
||||||
|
|
||||||
def conversation(
|
def conversation(
|
||||||
self: 'TelegramClient',
|
self: 'TelegramClient',
|
||||||
entity: 'hints.EntityLike',
|
entity: 'hints.EntityLike',
|
||||||
|
|
|
@ -104,20 +104,15 @@ class Dialog:
|
||||||
return await self._client.send_message(
|
return await self._client.send_message(
|
||||||
self.input_entity, *args, **kwargs)
|
self.input_entity, *args, **kwargs)
|
||||||
|
|
||||||
async def delete(self):
|
async def delete(self, revoke=False):
|
||||||
"""
|
"""
|
||||||
Deletes the dialog from your dialog list. If you own the
|
Deletes the dialog from your dialog list. If you own the
|
||||||
channel this won't destroy it, only delete it from the list.
|
channel this won't destroy it, only delete it from the list.
|
||||||
|
|
||||||
|
Shorthand for `telethon.client.dialogs.DialogMethods.delete_dialog`
|
||||||
|
with ``entity`` already set.
|
||||||
"""
|
"""
|
||||||
if self.is_channel:
|
await self._client.delete_dialog(self.input_entity, revoke=revoke)
|
||||||
await self._client(functions.channels.LeaveChannelRequest(
|
|
||||||
self.input_entity))
|
|
||||||
else:
|
|
||||||
if self.is_group:
|
|
||||||
await self._client(functions.messages.DeleteChatUserRequest(
|
|
||||||
self.entity.id, types.InputPeerSelf()))
|
|
||||||
await self._client(functions.messages.DeleteHistoryRequest(
|
|
||||||
self.input_entity, 0))
|
|
||||||
|
|
||||||
async def archive(self, folder=1):
|
async def archive(self, folder=1):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user