TGWindow


NameTGWindow JSON
Version 0.0.1 PyPI version JSON
download
home_pagehttps://github.com/belyankiss/TelegramWindows.git
SummaryБиблиотека для создания простых окон в телеграмм боте.
upload_time2024-12-17 07:06:29
maintainerNone
docs_urlNone
authorPyExecutor
requires_python>=3.6
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Конечно! Вот пример `README.md` для вашей библиотеки в формате Markdown.

---

# TGWindow

**TGWindow** — это библиотека для удобного создания и управления окнами (сообщениями) в **Telegram** с использованием **Aiogram**. Она предоставляет базовый интерфейс для работы с текстом, кнопками и отправкой сообщений.

---

## Возможности библиотеки
- Удобное создание сообщений с текстом и кнопками.
- Поддержка **Inline** и **Reply** клавиатур.
- Гибкая настройка размеров клавиатур.
- Простое взаимодействие с `Message` и `CallbackQuery`.

---

## Установка

Установите библиотеку через `pip` (если она доступна) или вручную.

```bash
pip install tgwindow
```

---

## Пример использования

### 1. **Создание окна и отправка сообщения**

```python
from datetime import datetime
import asyncio
from aiogram.types import Message, Chat
from src.sender.sender import Send
from src.windows.base_window import BaseWindow


# Создание окна
class HelloWindow(BaseWindow):
    def hello(self):
        self.text = "Hello, guys!"
        self.button("Say Hello")
        return self  # Возвращаем экземпляр для удобства


# Создание объекта Send
send = Send(event=message)


# Отправка сообщения
async def main():
    await send(HelloWindow().hello())


if __name__ == "__main__":
    asyncio.run(main())
```

---

### 2. **Добавление кнопок и размера клавиатуры**

```python
class CustomWindow(BaseWindow):
    def setup(self):
        self.text = "Choose an option:"
        self.button(("Option 1", "data_1"))  # Inline-кнопки
        self.button(("Option 2", "data_2"))
        self.size(2)  # Кнопки располагаются по 2 в ряд
        return self

# Отправка кастомного окна
async def main():
    await send(CustomWindow().setup())

if __name__ == "__main__":
    asyncio.run(main())
```

---

### 3. **Использование Reply-клавиатуры**

```python
from src.keyboard.base_keyboards import Reply


class MyKeyboard(Reply):
    block = "Block user"
    away_button = "Away button"


class ReplyWindow(BaseWindow):
    def setup(self):
        self.text = "Choose a command:"
        self.button("/start")
        self.button("/help")
        self.button("/settings")
        return self


class NewWindow(BaseWindow):
    def blocker(self):
        self.text = "Block user?"
        self.button(MyKeyboard())
        return self


async def main():
    await send(ReplyWindow().setup())


if __name__ == "__main__":
    asyncio.run(main())
```

---

## Основные классы

### 1. **`BaseWindow`**
`BaseWindow` — это базовый класс для создания окон. Он предоставляет методы для настройки текста и кнопок.

- **`self.text`** — текст сообщения.
- **`self.button(*args, keyboard=None)`** — добавление кнопок.
- **`self.size(int)`** — настройка количества кнопок в ряду.
- **`self._build()`** — возвращает текст и разметку для отправки.

---

### 2. **`Send`**
`Send` — класс для отправки сообщений.

**Инициализация:**
```python
send = Send(event: Message | CallbackQuery)
```

**Использование:**
```python
await send(window: BaseWindow | tuple[str, keyboard] | str, photo: str | None)
```

---

## Требования
- **Python 3.8+**
- **Aiogram 3.0+**

---

## Лицензия
Этот проект распространяется под лицензией **MIT**. Используйте свободно!

---

## Обратная связь
Если у вас есть вопросы или предложения, создавайте **Issue** или отправляйте PR.

---

Такой `README.md` можно сразу использовать в вашем репозитории.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/belyankiss/TelegramWindows.git",
    "name": "TGWindow",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "PyExecutor",
    "author_email": "belyankiss@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c0/a3/bc6be6f1d88ed54a02dbdd6e972c56a52f6caa31d30f9a8b206bd1ba352d/tgwindow-0.0.1.tar.gz",
    "platform": null,
    "description": "\u041a\u043e\u043d\u0435\u0447\u043d\u043e! \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 `README.md` \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 Markdown.\r\n\r\n---\r\n\r\n# TGWindow\r\n\r\n**TGWindow** \u2014 \u044d\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043a\u043d\u0430\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u0432 **Telegram** \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c **Aiogram**. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.\r\n\r\n---\r\n\r\n## \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\r\n- \u0423\u0434\u043e\u0431\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438.\r\n- \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 **Inline** \u0438 **Reply** \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440.\r\n- \u0413\u0438\u0431\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440.\r\n- \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 `Message` \u0438 `CallbackQuery`.\r\n\r\n---\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 `pip` (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430) \u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e.\r\n\r\n```bash\r\npip install tgwindow\r\n```\r\n\r\n---\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n### 1. **\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f**\r\n\r\n```python\r\nfrom datetime import datetime\r\nimport asyncio\r\nfrom aiogram.types import Message, Chat\r\nfrom src.sender.sender import Send\r\nfrom src.windows.base_window import BaseWindow\r\n\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430\r\nclass HelloWindow(BaseWindow):\r\n    def hello(self):\r\n        self.text = \"Hello, guys!\"\r\n        self.button(\"Say Hello\")\r\n        return self  # \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430\r\n\r\n\r\n# \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Send\r\nsend = Send(event=message)\r\n\r\n\r\n# \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\r\nasync def main():\r\n    await send(HelloWindow().hello())\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n```\r\n\r\n---\r\n\r\n### 2. **\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b**\r\n\r\n```python\r\nclass CustomWindow(BaseWindow):\r\n    def setup(self):\r\n        self.text = \"Choose an option:\"\r\n        self.button((\"Option 1\", \"data_1\"))  # Inline-\u043a\u043d\u043e\u043f\u043a\u0438\r\n        self.button((\"Option 2\", \"data_2\"))\r\n        self.size(2)  # \u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e 2 \u0432 \u0440\u044f\u0434\r\n        return self\r\n\r\n# \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\r\nasync def main():\r\n    await send(CustomWindow().setup())\r\n\r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n```\r\n\r\n---\r\n\r\n### 3. **\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Reply-\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b**\r\n\r\n```python\r\nfrom src.keyboard.base_keyboards import Reply\r\n\r\n\r\nclass MyKeyboard(Reply):\r\n    block = \"Block user\"\r\n    away_button = \"Away button\"\r\n\r\n\r\nclass ReplyWindow(BaseWindow):\r\n    def setup(self):\r\n        self.text = \"Choose a command:\"\r\n        self.button(\"/start\")\r\n        self.button(\"/help\")\r\n        self.button(\"/settings\")\r\n        return self\r\n\r\n\r\nclass NewWindow(BaseWindow):\r\n    def blocker(self):\r\n        self.text = \"Block user?\"\r\n        self.button(MyKeyboard())\r\n        return self\r\n\r\n\r\nasync def main():\r\n    await send(ReplyWindow().setup())\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n```\r\n\r\n---\r\n\r\n## \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b\r\n\r\n### 1. **`BaseWindow`**\r\n`BaseWindow` \u2014 \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u043a\u043e\u043d. \u041e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a.\r\n\r\n- **`self.text`** \u2014 \u0442\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.\r\n- **`self.button(*args, keyboard=None)`** \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a.\r\n- **`self.size(int)`** \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043d\u043e\u043f\u043e\u043a \u0432 \u0440\u044f\u0434\u0443.\r\n- **`self._build()`** \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0443 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.\r\n\r\n---\r\n\r\n### 2. **`Send`**\r\n`Send` \u2014 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439.\r\n\r\n**\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f:**\r\n```python\r\nsend = Send(event: Message | CallbackQuery)\r\n```\r\n\r\n**\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435:**\r\n```python\r\nawait send(window: BaseWindow | tuple[str, keyboard] | str, photo: str | None)\r\n```\r\n\r\n---\r\n\r\n## \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\r\n- **Python 3.8+**\r\n- **Aiogram 3.0+**\r\n\r\n---\r\n\r\n## \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\r\n\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 **MIT**. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e!\r\n\r\n---\r\n\r\n## \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c\r\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 **Issue** \u0438\u043b\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 PR.\r\n\r\n---\r\n\r\n\u0422\u0430\u043a\u043e\u0439 `README.md` \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043e\u043a\u043e\u043d \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0431\u043e\u0442\u0435.",
    "version": "0.0.1",
    "project_urls": {
        "Homepage": "https://github.com/belyankiss/TelegramWindows.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45824157ba2083463feb7ee851ca81e58cd11d55dc5db158ec0c96bdf072dbbc",
                "md5": "a0f9308160367a4f557b2e466b2434cb",
                "sha256": "95ad0615d4974c8199aac05a5b84de56c15d8902964444a7d4edf4f8e461c5e6"
            },
            "downloads": -1,
            "filename": "TGWindow-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a0f9308160367a4f557b2e466b2434cb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 7201,
            "upload_time": "2024-12-17T07:06:27",
            "upload_time_iso_8601": "2024-12-17T07:06:27.389486Z",
            "url": "https://files.pythonhosted.org/packages/45/82/4157ba2083463feb7ee851ca81e58cd11d55dc5db158ec0c96bdf072dbbc/TGWindow-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c0a3bc6be6f1d88ed54a02dbdd6e972c56a52f6caa31d30f9a8b206bd1ba352d",
                "md5": "5047b19a7e57f84e495fe6f9962a4388",
                "sha256": "7129626d6c8d10dfa933e8849504e30629e893ff3634a9a618bea06f99187400"
            },
            "downloads": -1,
            "filename": "tgwindow-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "5047b19a7e57f84e495fe6f9962a4388",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 5867,
            "upload_time": "2024-12-17T07:06:29",
            "upload_time_iso_8601": "2024-12-17T07:06:29.974891Z",
            "url": "https://files.pythonhosted.org/packages/c0/a3/bc6be6f1d88ed54a02dbdd6e972c56a52f6caa31d30f9a8b206bd1ba352d/tgwindow-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-17 07:06:29",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "belyankiss",
    "github_project": "TelegramWindows",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tgwindow"
}
        
Elapsed time: 0.41640s