diff options
| author | Tolmachev Igor <me@igorek.dev> | 2026-03-23 18:40:40 +0300 |
|---|---|---|
| committer | Tolmachev Igor <me@igorek.dev> | 2026-03-23 18:40:40 +0300 |
| commit | d5994e732d7b1dfa469cf400132ba49c8f75315e (patch) | |
| tree | a091b84babf7829ae6193d78fb8dc090336b0f9b /models | |
| parent | f7b7e87cffc9dcb2817b070d7a003ac234c96ec3 (diff) | |
| download | vpn_manager_bot-d5994e732d7b1dfa469cf400132ba49c8f75315e.tar.gz vpn_manager_bot-d5994e732d7b1dfa469cf400132ba49c8f75315e.zip | |
Add new_invoice command
Diffstat (limited to 'models')
| -rw-r--r-- | models/__init__.py | 2 | ||||
| -rw-r--r-- | models/callback_data.py | 5 | ||||
| -rw-r--r-- | models/invoce.py | 13 | ||||
| -rw-r--r-- | models/rich_text.py | 10 |
4 files changed, 26 insertions, 4 deletions
diff --git a/models/__init__.py b/models/__init__.py index 9d56b33..0547429 100644 --- a/models/__init__.py +++ b/models/__init__.py | |||
| @@ -5,6 +5,7 @@ from .user import User | |||
| 5 | from .invoce import Invoice | 5 | from .invoce import Invoice |
| 6 | from .payment import Payment | 6 | from .payment import Payment |
| 7 | from .announcement import Announcement | 7 | from .announcement import Announcement |
| 8 | from . import callback_data | ||
| 8 | # isort: on | 9 | # isort: on |
| 9 | 10 | ||
| 10 | __all__ = [ | 11 | __all__ = [ |
| @@ -14,4 +15,5 @@ __all__ = [ | |||
| 14 | "Payment", | 15 | "Payment", |
| 15 | "RichText", | 16 | "RichText", |
| 16 | "Announcement", | 17 | "Announcement", |
| 18 | "callback_data", | ||
| 17 | ] | 19 | ] |
diff --git a/models/callback_data.py b/models/callback_data.py new file mode 100644 index 0000000..d3e6d61 --- /dev/null +++ b/models/callback_data.py | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | from aiogram.filters.callback_data import CallbackData | ||
| 2 | |||
| 3 | |||
| 4 | class PayInvoiceData(CallbackData, prefix="pay_invoice"): | ||
| 5 | invoice_id: int | ||
diff --git a/models/invoce.py b/models/invoce.py index 54a445e..66ff019 100644 --- a/models/invoce.py +++ b/models/invoce.py | |||
| @@ -1,13 +1,22 @@ | |||
| 1 | from datetime import datetime | 1 | from datetime import datetime |
| 2 | 2 | ||
| 3 | from sqlalchemy import JSON | ||
| 3 | from sqlalchemy.orm import Mapped, mapped_column | 4 | from sqlalchemy.orm import Mapped, mapped_column |
| 4 | 5 | ||
| 5 | from models import BaseTable | 6 | from models import BaseTable, RichText |
| 6 | 7 | ||
| 7 | 8 | ||
| 8 | class Invoice(BaseTable): | 9 | class Invoice(BaseTable): |
| 9 | __tablename__ = "invoice" | 10 | __tablename__ = "invoice" |
| 10 | 11 | ||
| 11 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) | 12 | id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) |
| 12 | amount: Mapped[float] | 13 | __message: Mapped[str] = mapped_column("message", JSON()) |
| 13 | datetime: Mapped[datetime] | 14 | datetime: Mapped[datetime] |
| 15 | |||
| 16 | @property | ||
| 17 | def message(self) -> RichText: | ||
| 18 | return RichText.model_validate_json(self.__message) | ||
| 19 | |||
| 20 | @message.setter | ||
| 21 | def message(self, value: RichText) -> None: | ||
| 22 | self.__message = value.model_dump_json() | ||
diff --git a/models/rich_text.py b/models/rich_text.py index e5441b6..6d1c1cb 100644 --- a/models/rich_text.py +++ b/models/rich_text.py | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | from typing import Self | 1 | from typing import Self |
| 2 | 2 | ||
| 3 | from aiogram import Bot | 3 | from aiogram import Bot |
| 4 | from aiogram.types import Message, MessageEntity | 4 | from aiogram.types import Message, MessageEntity, ReplyMarkupUnion |
| 5 | from pydantic import BaseModel | 5 | from pydantic import BaseModel |
| 6 | 6 | ||
| 7 | 7 | ||
| @@ -34,10 +34,16 @@ class RichText(BaseModel): | |||
| 34 | 34 | ||
| 35 | return result | 35 | return result |
| 36 | 36 | ||
| 37 | async def send(self, bot: Bot, chat_id: int) -> Message: | 37 | async def send( |
| 38 | self, | ||
| 39 | bot: Bot, | ||
| 40 | chat_id: int, | ||
| 41 | reply_markup: ReplyMarkupUnion | None = None, | ||
| 42 | ) -> Message: | ||
| 38 | return await bot.send_message( | 43 | return await bot.send_message( |
| 39 | chat_id=chat_id, | 44 | chat_id=chat_id, |
| 40 | text=self.text, | 45 | text=self.text, |
| 41 | entities=self.entities, | 46 | entities=self.entities, |
| 42 | parse_mode=None, | 47 | parse_mode=None, |
| 48 | reply_markup=reply_markup, | ||
| 43 | ) | 49 | ) |
