Add shortcuts to easily delete threads/messages
This commit is contained in:
@@ -594,17 +594,7 @@ class Client:
|
|||||||
>>> group = fbchat.Group(session=session, id="1234")
|
>>> group = fbchat.Group(session=session, id="1234")
|
||||||
>>> client.delete_threads([group])
|
>>> client.delete_threads([group])
|
||||||
"""
|
"""
|
||||||
data_unpin = {}
|
_threads.ThreadABC._delete_many(self.session, (t.id for t in threads))
|
||||||
data_delete = {}
|
|
||||||
for i, thread in enumerate(threads):
|
|
||||||
data_unpin["ids[{}]".format(thread.id)] = "false"
|
|
||||||
data_delete["ids[{}]".format(i)] = thread.id
|
|
||||||
j_unpin = self.session._payload_post(
|
|
||||||
"/ajax/mercury/change_pinned_status.php?dpr=1", data_unpin
|
|
||||||
)
|
|
||||||
j_delete = self.session._payload_post(
|
|
||||||
"/ajax/mercury/delete_threads.php?dpr=1", data_delete
|
|
||||||
)
|
|
||||||
|
|
||||||
def delete_messages(self, messages: Iterable[_models.Message]):
|
def delete_messages(self, messages: Iterable[_models.Message]):
|
||||||
"""Bulk delete specified messages.
|
"""Bulk delete specified messages.
|
||||||
@@ -617,7 +607,4 @@ class Client:
|
|||||||
>>> message2 = fbchat.Message(thread=thread, id="2345")
|
>>> message2 = fbchat.Message(thread=thread, id="2345")
|
||||||
>>> client.delete_threads([message1, message2])
|
>>> client.delete_threads([message1, message2])
|
||||||
"""
|
"""
|
||||||
data = {}
|
_models.Message._delete_many(self.session, (m.id for m in messages))
|
||||||
for i, message in enumerate(messages):
|
|
||||||
data["message_ids[{}]".format(i)] = message.id
|
|
||||||
j = self.session._payload_post("/ajax/mercury/delete_messages.php?dpr=1", data)
|
|
||||||
|
@@ -94,9 +94,28 @@ class Message:
|
|||||||
"""The session to use when making requests."""
|
"""The session to use when making requests."""
|
||||||
return self.thread.session
|
return self.thread.session
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _delete_many(session, message_ids):
|
||||||
|
data = {}
|
||||||
|
for i, id_ in enumerate(message_ids):
|
||||||
|
data["message_ids[{}]".format(i)] = id_
|
||||||
|
j = session._payload_post("/ajax/mercury/delete_messages.php?dpr=1", data)
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
"""Delete the message (removes it only for the user).
|
||||||
|
|
||||||
|
If you want to delete multiple messages, please use `Client.delete_messages`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
>>> message.delete()
|
||||||
|
"""
|
||||||
|
self._delete_many(self.session, [self.id])
|
||||||
|
|
||||||
def unsend(self):
|
def unsend(self):
|
||||||
"""Unsend the message (removes it for everyone).
|
"""Unsend the message (removes it for everyone).
|
||||||
|
|
||||||
|
The message must to be sent by you, and less than 10 minutes ago.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
>>> message.unsend()
|
>>> message.unsend()
|
||||||
"""
|
"""
|
||||||
|
@@ -75,6 +75,10 @@ class ThreadABC(metaclass=abc.ABCMeta):
|
|||||||
"""
|
"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def fetch(self):
|
||||||
|
# TODO: This
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
def wave(self, first: bool = True) -> str:
|
def wave(self, first: bool = True) -> str:
|
||||||
"""Wave hello to the thread.
|
"""Wave hello to the thread.
|
||||||
|
|
||||||
@@ -695,6 +699,26 @@ class ThreadABC(metaclass=abc.ABCMeta):
|
|||||||
data = {"id": self.id}
|
data = {"id": self.id}
|
||||||
j = self.session._payload_post("/ajax/mercury/mark_spam.php?dpr=1", data)
|
j = self.session._payload_post("/ajax/mercury/mark_spam.php?dpr=1", data)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _delete_many(session, thread_ids):
|
||||||
|
data = {}
|
||||||
|
for i, id_ in enumerate(thread_ids):
|
||||||
|
data["ids[{}]".format(i)] = id_
|
||||||
|
# Not needed any more
|
||||||
|
# j = session._payload_post("/ajax/mercury/change_pinned_status.php?dpr=1", ...)
|
||||||
|
# Both /ajax/mercury/delete_threads.php (with an s) doesn't work
|
||||||
|
j = session._payload_post("/ajax/mercury/delete_thread.php", data)
|
||||||
|
|
||||||
|
def delete(self):
|
||||||
|
"""Delete the thread.
|
||||||
|
|
||||||
|
If you want to delete multiple threads, please use `Client.delete_threads`.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
>>> message.delete()
|
||||||
|
"""
|
||||||
|
self._delete_many(self.session, [self.id])
|
||||||
|
|
||||||
def _forced_fetch(self, message_id: str) -> dict:
|
def _forced_fetch(self, message_id: str) -> dict:
|
||||||
params = {
|
params = {
|
||||||
"thread_and_message_id": {"thread_id": self.id, "message_id": message_id}
|
"thread_and_message_id": {"thread_id": self.id, "message_id": message_id}
|
||||||
|
Reference in New Issue
Block a user