diff --git a/evolutionapi/services/__pycache__/chat.cpython-310.pyc b/evolutionapi/services/__pycache__/chat.cpython-310.pyc index 87c1661..5b4d4f7 100644 Binary files a/evolutionapi/services/__pycache__/chat.cpython-310.pyc and b/evolutionapi/services/__pycache__/chat.cpython-310.pyc differ diff --git a/evolutionapi/services/__pycache__/group.cpython-310.pyc b/evolutionapi/services/__pycache__/group.cpython-310.pyc index 60b4301..a5d9328 100644 Binary files a/evolutionapi/services/__pycache__/group.cpython-310.pyc and b/evolutionapi/services/__pycache__/group.cpython-310.pyc differ diff --git a/evolutionapi/services/chat.py b/evolutionapi/services/chat.py index d4d3291..f1e06a5 100644 --- a/evolutionapi/services/chat.py +++ b/evolutionapi/services/chat.py @@ -1,4 +1,4 @@ -from typing import Union, BinaryIO +from typing import Union, BinaryIO, Optional from ..models.chat import * class ChatService: @@ -68,13 +68,53 @@ class ChatService: instance_token=instance_token ) - def get_messages(self, instance_id: str, remote_jid: str, instance_token: str, page: int = 1, offset: int = 50): - '''Get messages from a chat''' + def get_messages( + self, + instance_id: str, + remote_jid: str, + instance_token: str, + message_id: Optional[str] = None, + whatsapp_message_id: Optional[str] = None, + from_me: Optional[bool] = None, + message_type: Optional[str] = None, + source: Optional[str] = None, + timestamp_start: Optional[str] = None, + timestamp_end: Optional[str] = None, + page: int = 1, + offset: int = 50 + ): + ''' + Obtém mensagens de um chat com filtros opcionais + + Args: + timestamp_start: Data inicial no formato ISO (ex: "2025-01-16T00:00:00Z") + timestamp_end: Data final no formato ISO (ex: "2025-01-16T23:59:59Z") + ''' + where = {"key": {"remoteJid": remote_jid}} + + if message_id: + where["id"] = message_id + if whatsapp_message_id: + where["key"]["id"] = whatsapp_message_id + if from_me is not None: + where["key"]["fromMe"] = from_me + if message_type: + where["messageType"] = message_type + if source: + where["source"] = source + if timestamp_start or timestamp_end: + where["messageTimestamp"] = {} + if timestamp_start: + where["messageTimestamp"]["gte"] = timestamp_start + if timestamp_end: + where["messageTimestamp"]["lte"] = timestamp_end + payload = { - "where": {"key": {"remoteJid": remote_jid}}, + "where": where, "page": page, "offset": offset, } + return self.client.post( f'chat/findMessages/{instance_id}', data=payload, diff --git a/test_evolution.py b/test_evolution.py index cb91767..5652156 100644 --- a/test_evolution.py +++ b/test_evolution.py @@ -14,9 +14,10 @@ client = EvolutionClient( instance_token = "60BDC703E413-4710-9473-CA2A763866FE" instance_id = "94a0aafa-e636-4534-a185-5562bf8f2c22" -response = client.group.fetch_all_groups(instance_id, instance_token, False) +# response = client.group.fetch_all_groups(instance_id, instance_token, False) + +# print(response) -print(response) # text_message = TextMessage( # number="557499879409", @@ -91,4 +92,20 @@ print(response) # delete_instance = client.instance_operations.delete(instance_id, instance_token) # print("Instância deletada") -# print(delete_instance) \ No newline at end of file +# print(delete_instance) + +# group_id = "120363024931487276@g.us" + +# # Buscando as 3 últimas mensagens do grupo +# mensagens = client.chat.get_messages( +# instance_id=instance_id, +# remote_jid=group_id, +# instance_token=instance_token, +# timestamp_start="2024-12-27T00:00:00Z", +# timestamp_end="2024-12-27T23:59:59Z", +# page=1, +# offset=3 +# ) + +# print("Mensagens encontradas:") +# print(mensagens) \ No newline at end of file