Skip to main content

Библиотека для создания простых окон в Telegram-боте с использованием aiogram.

Project description

TGWindow

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


Возможности библиотеки

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

Установка

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

pip install tgwindow

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

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

Для начала необходимо запустить самого бота и подключить к нему WindowMiddleware

import asyncio
from aiogram import Dispatcher, Bot
from src.middleware import WindowMiddleware

dp = Dispatcher()

async def main():
    bot = Bot("YOUR_BOT_TOKEN")
    # Здесь подключаем WindowMiddleware
    dp.update.middleware(WindowMiddleware())
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)
    
if __name__ == '__main__':
    asyncio.run(main())

Далее создаем окна.

from src.window.base import BaseWindow, Inline, Reply
from src.window.wrapper import auto_window


class Example(BaseWindow):
    # Buttons
    FIRST_BUTTON = Inline("first", "first_")
    SECOND_BUTTON = Reply("text")
    THIRD_BUTTON = Reply("text")

    @auto_window
    async def hello(self, username: str):
        self.photo = "Path:/to/your/photo.jpg"
        self.text = f"Привет {username}"
        self.buttons(self.SECOND_BUTTON,
                     self.THIRD_BUTTON)

    @auto_window
    async def schema_buttons(self):
        self.text = "Schema"
        self.buttons("one", "two", "three", "four", "five")
        self.schema_keyboard = 3, 1, 1

    @auto_window
    async def inline_button(self):
        self.text = "This message with inline keyboard"
        self.button(*self.FIRST_BUTTON)

Теперь можно создавать handlers

from aiogram import F
from aiogram.types import Message, CallbackQuery
from tests.main_test import dp, Example


@dp.message(F.text == "/start")
async def hello_mes(msg: Message, example: Example):
    await example.hello(msg, username="belyankiss")

@dp.callback_query(F.data == Example.FIRST_BUTTON.callback)
async def answer_schema(call: CallbackQuery, example: Example):
    await example.schema_buttons(call)

@dp.message()
async def any_message(msg: Message, example: Example):
    await example.inline_button(msg)

ВНИМАНИЕ! Чтобы получить доступ к вашему классу в handlers, необходимо использовать название вашего класса в малом регистре!!!

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

1. BaseWindow

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

  • self.text — текст сообщения.
  • self.size_keyboard(int) — настройка количества кнопок в ряду.
  • self.schema_keyboard(Tuple[int, ...]) - настройка схемы клавиатуры. Принимает кортеж из целых чисел для необходимого количества кнопок в ряду. Сумма чисел кортежа должна быть равна количеству кнопок.
  • self.photo(str) — принимает путь к файлу фото локально или уникальный идентификатор с серверов телеграмм
  • self.delete_keyboard(bool) - булева для удаления reply-клавиатуры. Изначально False.
  • self.message() - возвращает кортеж. Где 1 значение это текст, 2 - клавиатура или None. Удобно использовать при отправке сообщений напрямую через бот. Тогда декоратор @auto_window использовать не нужно

Требования

  • Python 3.8+
  • Aiogram 3.0+

Лицензия

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


Обратная связь

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


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tgwindow-1.0.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tgwindow-1.0.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file tgwindow-1.0.0.tar.gz.

File metadata

  • Download URL: tgwindow-1.0.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.0

File hashes

Hashes for tgwindow-1.0.0.tar.gz
Algorithm Hash digest
SHA256 901ea2faa1794c6f62fee3a2eb1c4d7beb6cdb7470f5d79028999de6579c0fea
MD5 261555eb269cbcba26249fb4f1de56d1
BLAKE2b-256 a2eea82d5e3ef4c9e0b2d9b56ff117ac050f71253ca5deeeb41b647d53826cc1

See more details on using hashes here.

File details

Details for the file tgwindow-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: tgwindow-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.0

File hashes

Hashes for tgwindow-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd402159d724ffcdec72ab04f32c242d5732c67f6cd4e8f0e25b04f102fd9647
MD5 9d406c21f799b75b662460ef153881c4
BLAKE2b-256 774b0cf7914a3c98d5dea580fa17e274f760d6b3f8e1cc698770207d0cd24c81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page