mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-02-08 05:00:24 +00:00
71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TicketMessageResponse(BaseModel):
|
|
id: int
|
|
user_id: int
|
|
message_text: str
|
|
is_from_admin: bool
|
|
has_media: bool
|
|
media_type: Optional[str] = None
|
|
media_file_id: Optional[str] = None
|
|
media_caption: Optional[str] = None
|
|
created_at: datetime
|
|
|
|
|
|
class TicketResponse(BaseModel):
|
|
id: int
|
|
user_id: int
|
|
title: str
|
|
status: str
|
|
priority: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
closed_at: Optional[datetime] = None
|
|
user_reply_block_permanent: bool
|
|
user_reply_block_until: Optional[datetime] = None
|
|
messages: List[TicketMessageResponse] = Field(default_factory=list)
|
|
|
|
|
|
class TicketStatusUpdateRequest(BaseModel):
|
|
status: str
|
|
|
|
|
|
class TicketPriorityUpdateRequest(BaseModel):
|
|
priority: str
|
|
|
|
|
|
class TicketReplyBlockRequest(BaseModel):
|
|
permanent: bool = False
|
|
until: Optional[datetime] = None
|
|
|
|
|
|
class TicketReplyRequest(BaseModel):
|
|
message_text: Optional[str] = Field(default=None, max_length=4000)
|
|
media_type: Optional[str] = Field(
|
|
default=None,
|
|
description="Тип медиа (photo, video, document, voice и т.д.)",
|
|
max_length=32,
|
|
)
|
|
media_file_id: Optional[str] = Field(default=None, max_length=255)
|
|
media_caption: Optional[str] = Field(default=None, max_length=4000)
|
|
|
|
|
|
class TicketReplyResponse(BaseModel):
|
|
ticket: TicketResponse
|
|
message: TicketMessageResponse
|
|
|
|
|
|
class TicketMediaResponse(BaseModel):
|
|
id: int
|
|
ticket_id: int
|
|
media_type: str
|
|
media_file_id: str
|
|
media_caption: Optional[str] = None
|
|
media_url: Optional[str] = None
|