mirror of
https://github.com/EvolutionAPI/evolution-client-python.git
synced 2025-07-13 07:04:49 -06:00
254 lines
6.7 KiB
Python
254 lines
6.7 KiB
Python
from enum import Enum
|
|
from typing import List, Optional, Union
|
|
from dataclasses import dataclass
|
|
|
|
class MediaType(Enum):
|
|
IMAGE = "image"
|
|
VIDEO = "video"
|
|
DOCUMENT = "document"
|
|
|
|
class StatusType(Enum):
|
|
TEXT = "text"
|
|
IMAGE = "image"
|
|
VIDEO = "video"
|
|
AUDIO = "audio"
|
|
|
|
class FontType(Enum):
|
|
SERIF = 1
|
|
NORICAN_REGULAR = 2
|
|
BRYNDAN_WRITE = 3
|
|
BEBASNEUE_REGULAR = 4
|
|
OSWALD_HEAVY = 5
|
|
|
|
class BaseMessage:
|
|
def __init__(self, **kwargs):
|
|
self.__dict__.update({k: v for k, v in kwargs.items() if v is not None})
|
|
|
|
class QuotedMessage(BaseMessage):
|
|
def __init__(self, key: dict, message: Optional[dict] = None):
|
|
super().__init__(key=key, message=message)
|
|
|
|
class TextMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
text: str,
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None,
|
|
linkPreview: Optional[bool] = None,
|
|
mentionsEveryOne: Optional[bool] = None,
|
|
mentioned: Optional[List[str]] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
text=text,
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None,
|
|
linkPreview=linkPreview,
|
|
mentionsEveryOne=mentionsEveryOne,
|
|
mentioned=mentioned
|
|
)
|
|
|
|
class MediaMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
mediatype: str,
|
|
mimetype: str,
|
|
caption: str,
|
|
media: str,
|
|
fileName: str,
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None,
|
|
mentionsEveryOne: Optional[bool] = None,
|
|
mentioned: Optional[List[str]] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
mediatype=mediatype,
|
|
mimetype=mimetype,
|
|
caption=caption,
|
|
media=media,
|
|
fileName=fileName,
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None,
|
|
mentionsEveryOne=mentionsEveryOne,
|
|
mentioned=mentioned
|
|
)
|
|
|
|
class StatusMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
type: StatusType,
|
|
content: str,
|
|
caption: Optional[str] = None,
|
|
backgroundColor: Optional[str] = None,
|
|
font: Optional[FontType] = None,
|
|
allContacts: bool = False,
|
|
statusJidList: Optional[List[str]] = None
|
|
):
|
|
super().__init__(
|
|
type=type.value,
|
|
content=content,
|
|
caption=caption,
|
|
backgroundColor=backgroundColor,
|
|
font=font.value if font else None,
|
|
allContacts=allContacts,
|
|
statusJidList=statusJidList
|
|
)
|
|
|
|
class LocationMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
name: str,
|
|
address: str,
|
|
latitude: float,
|
|
longitude: float,
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
name=name,
|
|
address=address,
|
|
latitude=latitude,
|
|
longitude=longitude,
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None
|
|
)
|
|
|
|
class Contact(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
fullName: str,
|
|
wuid: str,
|
|
phoneNumber: str,
|
|
organization: Optional[str] = None,
|
|
email: Optional[str] = None,
|
|
url: Optional[str] = None
|
|
):
|
|
super().__init__(
|
|
fullName=fullName,
|
|
wuid=wuid,
|
|
phoneNumber=phoneNumber,
|
|
organization=organization,
|
|
email=email,
|
|
url=url
|
|
)
|
|
|
|
class ContactMessage(BaseMessage):
|
|
def __init__(self, number: str, contact: List[Contact]):
|
|
super().__init__(
|
|
number=number,
|
|
contact=[c.__dict__ for c in contact]
|
|
)
|
|
|
|
class ReactionMessage(BaseMessage):
|
|
def __init__(self, key: dict, reaction: str):
|
|
super().__init__(key=key, reaction=reaction)
|
|
|
|
class PollMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
name: str,
|
|
selectableCount: int,
|
|
values: List[str],
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
name=name,
|
|
selectableCount=selectableCount,
|
|
values=values,
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None
|
|
)
|
|
|
|
class ListRow(BaseMessage):
|
|
def __init__(self, title: str, description: str, rowId: str):
|
|
super().__init__(
|
|
title=title,
|
|
description=description,
|
|
rowId=rowId
|
|
)
|
|
|
|
class ListSection(BaseMessage):
|
|
def __init__(self, title: str, rows: List[ListRow]):
|
|
super().__init__(
|
|
title=title,
|
|
rows=[r.__dict__ for r in rows]
|
|
)
|
|
|
|
class ListMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
title: str,
|
|
description: str,
|
|
buttonText: str,
|
|
footerText: str,
|
|
sections: List[ListSection],
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
title=title,
|
|
description=description,
|
|
buttonText=buttonText,
|
|
footerText=footerText,
|
|
sections=[s.__dict__ for s in sections],
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None
|
|
)
|
|
|
|
class Button(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
type: str,
|
|
displayText: str,
|
|
id: Optional[str] = None,
|
|
copyCode: Optional[str] = None,
|
|
url: Optional[str] = None,
|
|
phoneNumber: Optional[str] = None,
|
|
currency: Optional[str] = None,
|
|
name: Optional[str] = None,
|
|
keyType: Optional[str] = None,
|
|
key: Optional[str] = None
|
|
):
|
|
super().__init__(
|
|
type=type,
|
|
displayText=displayText,
|
|
id=id,
|
|
copyCode=copyCode,
|
|
url=url,
|
|
phoneNumber=phoneNumber,
|
|
currency=currency,
|
|
name=name,
|
|
keyType=keyType,
|
|
key=key
|
|
)
|
|
|
|
class ButtonMessage(BaseMessage):
|
|
def __init__(
|
|
self,
|
|
number: str,
|
|
title: str,
|
|
description: str,
|
|
footer: str,
|
|
buttons: List[Button],
|
|
delay: Optional[int] = None,
|
|
quoted: Optional[QuotedMessage] = None
|
|
):
|
|
super().__init__(
|
|
number=number,
|
|
title=title,
|
|
description=description,
|
|
footer=footer,
|
|
buttons=[b.__dict__ for b in buttons],
|
|
delay=delay,
|
|
quoted=quoted.__dict__ if quoted else None
|
|
) |