mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-02-27 06:42:24 +00:00
- Add pyproject.toml with uv and ruff configuration - Pin Python version to 3.13 via .python-version - Add Makefile commands: lint, format, fix - Apply ruff formatting to entire codebase - Remove unused imports (base64 in yookassa/simple_subscription) - Update .gitignore for new config files
70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
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: str | None = None
|
|
media_file_id: str | None = None
|
|
media_caption: str | None = 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: datetime | None = None
|
|
user_reply_block_permanent: bool
|
|
user_reply_block_until: datetime | None = 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: datetime | None = None
|
|
|
|
|
|
class TicketReplyRequest(BaseModel):
|
|
message_text: str | None = Field(default=None, max_length=4000)
|
|
media_type: str | None = Field(
|
|
default=None,
|
|
description='Тип медиа (photo, video, document, voice и т.д.)',
|
|
max_length=32,
|
|
)
|
|
media_file_id: str | None = Field(default=None, max_length=255)
|
|
media_caption: str | None = 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: str | None = None
|
|
media_url: str | None = None
|