Skip to main content

quickbot - Rapid Application Development Framework for Telegram Bots

Project description

QuickBot

Telegram Bots Rapid Application Development (RAD) Framework.

QuickBot is a library for fast development of Telegram bots and mini-apps following the RAD (Rapid Application Development) principle in a declarative style.

Key Features

  • Automatic CRUD Interface Generation – Manage objects effortlessly without manual UI coding.
  • Built-in Field Editors – Includes text inputs, date/time pickers, boolean switches, enums, and entity selectors.
  • Advanced Pagination & Filtering – Easily organize and navigate large datasets.
  • Authentication & Authorization – Role-based access control for secure interactions.
  • Context Preservation – Store navigation stacks and user interaction states in the database.
  • Internationalization Support – Localizable UI and string fields for multilingual bots.

QuickBot powered by FastAPI, SQLModel & aiogram – Leverage the full capabilities of these frameworks for high performance and flexibility.

Benefits

  • Faster Development – Automate repetitive tasks and build bots in record time.
  • Highly Modular – Easily extend and customize functionality.
  • Less Code Duplication – Focus on core features while QuickBot handles the rest.
  • Enterprise-Grade Structure – Scalable, maintainable, and optimized for real-world usage.

Example

class AppEntity(BotEntity):
    """
    BotEntity - business entity. Based on SQLModel, which provides ORM functionality,
    basic CRUD functions and additional metadata, describing entities view and behaviour
    """
    bot_entity_descriptor = Entity(         # metadata attribute
        name = "bot_entity",                # Entity - descriptor for entity metadata
        ...
    )

    name: str                               # entity field with default sqlmodel's FieldInfo descriptor
                                            # and default quickbot's field descriptor

    description: str | None = Field(        # field with sqlmodel's descriptor
        sa_type = String, index = True)     # and default quickbot's descriptor

    age: int = EntityField(                 # field with quickbot's descriptor
        caption = "Age",
    )

    user_id: int | None = EntityField(      # using both descriptors
        sm_descriptor=Field(
            sa_type=BigInteger,
            foreign_key="user.id",
            ondelete="RESTRICT",
            nullable=True,
        ),
        is_visible=False,
    )

    user: Optional[User] = EntityField(     # using Relationship as sqlmodel descriptor
        sm_descriptor=Relationship(
            back_populates="entities",
            sa_relationship_kwargs={
                "lazy": "selectin",
                "foreign_keys": "Entity.user_id",
            }
        ),
        caption="User",
    )


app = QuickBot()                             # bot application based on FastAPI application
                                            # providing Telegram API webhook handler

@app.command(                               # decorator for bot commands definition
    name="menu",
    caption="Main menu",
    show_in_bot_commands=True,              # shows command in bot's main menu
    clear_navigation=True,                  # resets navigation stack between bot dialogues
)
async def menu(context: CommandCallbackContext):
    context.message_text = "Main menu"      # message text
    context.keyboard_builder.row(           # and buttons will be shown to user
        InlineKeyboardButton(
            text="Entities",
            callback_data=ContextData(                  # callback query dataclass representing
                command=CallbackCommand.ENTITY_LIST,    # navigation context and its parameters
                entity_name="bot_entity"
            ).pack(),
        )
    )

Result

<iframe width="100%" height="691" src="https://www.youtube.com/embed/ptTnoppkYfM" title="QuickBot Framework – The Open-Source RAD Tool for Telegram Bots" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

Here you can see the result - YouTube Video with Bot

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

quickbot-0.1.1.tar.gz (65.5 kB view details)

Uploaded Source

Built Distribution

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

quickbot-0.1.1-py3-none-any.whl (91.6 kB view details)

Uploaded Python 3

File details

Details for the file quickbot-0.1.1.tar.gz.

File metadata

  • Download URL: quickbot-0.1.1.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for quickbot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ff3e6cc8e6b94c7c39e7ad81f9a58b0ddf0086b179901ffec3fdce02d6cfef05
MD5 65d9b405b838add8c1e0581fc80b9588
BLAKE2b-256 b0b4a3929c7ac203459a7199f24d7c2c75f26a2ac311a9e7a45259a42b8188da

See more details on using hashes here.

File details

Details for the file quickbot-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: quickbot-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 91.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for quickbot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ea07658aad3b2088f53d4798cec11b135e8f390ee06b20d339f4b90d7722fbf0
MD5 532751e5089eee7d8ec6de0d0802bf7a
BLAKE2b-256 e6bd3016a8d23698ac149909c08554cb30399f65ccf1d72f3c6c59f8cd47018b

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