Add message-related functions to Message model
This commit is contained in:
@@ -703,36 +703,6 @@ class Client:
|
|||||||
SEND METHODS
|
SEND METHODS
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def unsend(self, mid):
|
|
||||||
"""Unsend message by it's ID (removes it for everyone).
|
|
||||||
|
|
||||||
Args:
|
|
||||||
mid: :ref:`Message ID <intro_message_ids>` of the message to unsend
|
|
||||||
"""
|
|
||||||
data = {"message_id": mid}
|
|
||||||
j = self._payload_post("/messaging/unsend_message/?dpr=1", data)
|
|
||||||
|
|
||||||
def react_to_message(self, message_id, reaction):
|
|
||||||
"""React to a message, or removes reaction.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
message_id: :ref:`Message ID <intro_message_ids>` to react to
|
|
||||||
reaction (MessageReaction): Reaction emoji to use, if None removes reaction
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
FBchatException: If request failed
|
|
||||||
"""
|
|
||||||
data = {
|
|
||||||
"action": "ADD_REACTION" if reaction else "REMOVE_REACTION",
|
|
||||||
"client_mutation_id": "1",
|
|
||||||
"actor_id": self._session.user_id,
|
|
||||||
"message_id": str(message_id),
|
|
||||||
"reaction": reaction.value if reaction else None,
|
|
||||||
}
|
|
||||||
data = {"doc_id": 1491398900900362, "variables": json.dumps({"data": data})}
|
|
||||||
j = self._payload_post("/webgraphql/mutation", data)
|
|
||||||
_util.handle_graphql_errors(j)
|
|
||||||
|
|
||||||
def edit_plan(self, plan, new_plan):
|
def edit_plan(self, plan, new_plan):
|
||||||
"""Edit a plan.
|
"""Edit a plan.
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ import json
|
|||||||
from string import Formatter
|
from string import Formatter
|
||||||
from ._core import log, attrs_default, Enum
|
from ._core import log, attrs_default, Enum
|
||||||
from . import _util, _session, _attachment, _location, _file, _quick_reply, _sticker
|
from . import _util, _session, _attachment, _location, _file, _quick_reply, _sticker
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
class EmojiSize(Enum):
|
class EmojiSize(Enum):
|
||||||
@@ -82,7 +83,7 @@ class Message:
|
|||||||
#: The session to use when making requests.
|
#: The session to use when making requests.
|
||||||
session = attr.ib(None, type=_session.Session)
|
session = attr.ib(None, type=_session.Session)
|
||||||
#: The message ID
|
#: The message ID
|
||||||
id = attr.ib(None)
|
id = attr.ib(None, converter=str)
|
||||||
|
|
||||||
#: The actual message
|
#: The actual message
|
||||||
text = attr.ib(None)
|
text = attr.ib(None)
|
||||||
@@ -115,6 +116,28 @@ class Message:
|
|||||||
#: Whether the message was forwarded
|
#: Whether the message was forwarded
|
||||||
forwarded = attr.ib(False)
|
forwarded = attr.ib(False)
|
||||||
|
|
||||||
|
def unsend(self):
|
||||||
|
"""Unsend the message (removes it for everyone)."""
|
||||||
|
data = {"message_id": self.id}
|
||||||
|
j = self.session._payload_post("/messaging/unsend_message/?dpr=1", data)
|
||||||
|
|
||||||
|
def react(self, reaction: Optional[MessageReaction]):
|
||||||
|
"""React to the message, or removes reaction.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
reaction: Reaction emoji to use, if None removes reaction
|
||||||
|
"""
|
||||||
|
data = {
|
||||||
|
"action": "ADD_REACTION" if reaction else "REMOVE_REACTION",
|
||||||
|
"client_mutation_id": "1",
|
||||||
|
"actor_id": self.session.user_id,
|
||||||
|
"message_id": self.id,
|
||||||
|
"reaction": reaction.value if reaction else None,
|
||||||
|
}
|
||||||
|
data = {"doc_id": 1491398900900362, "variables": json.dumps({"data": data})}
|
||||||
|
j = self.session._payload_post("/webgraphql/mutation", data)
|
||||||
|
_util.handle_graphql_errors(j)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_fetch(cls, thread, message_id: str) -> "Message":
|
def from_fetch(cls, thread, message_id: str) -> "Message":
|
||||||
"""Fetch `Message` object from the given message id.
|
"""Fetch `Message` object from the given message id.
|
||||||
|
Reference in New Issue
Block a user