from __future__ import annotations
from typing import TYPE_CHECKING, Mapping, Any, Sequence, Optional
if TYPE_CHECKING:
from ..client_ASYNC import Client
from dataclasses import dataclass
from .modmail import (
ConversationInfo as BaseConversationInfo,
Message as BaseMessage,
ModAction as BaseModAction,
UserDossier as BaseUserDossier,
ConversationAggregate as BaseConversationAggregate,
)
[docs]class ConversationInfo(BaseConversationInfo):
def __init__(self, d: Mapping[str, Any], client: Client) -> None:
super().__init__(d)
self.client: Client = client
("")
[docs] async def reply(self, body: str, *, hidden: bool = False, internal: bool = False) -> ConversationAggregate:
return await self.client.p.modmail.conversation.reply(self.id, body, hidden=hidden, internal=internal)
[docs] async def mark_read(self) -> None:
await self.client.p.modmail.conversation.mark_read(self.id)
[docs] async def mark_unread(self) -> None:
await self.client.p.modmail.conversation.mark_unread(self.id)
[docs]class Message(BaseMessage):
def __init__(self, d: Mapping[str, Any], client: Client) -> None:
super().__init__(d)
self.client: Client = client
("")
[docs]class ModAction(BaseModAction):
pass
[docs]class UserDossier(BaseUserDossier):
pass
[docs]@dataclass(repr=False, eq=False, frozen=True)
class ConversationAggregate(BaseConversationAggregate):
info: ConversationInfo
history: Sequence[object]
messages: Sequence[Message]
actions: Sequence[ModAction]
user_dossier: Optional[UserDossier]