Skip to main content

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

Metadata

Release files for quickbot 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quickbot 0.1.1
File Size Uploaded Provenance Actions
quickbot-0.1.1.tar.gz 65.5 kB Without provenance Details for quickbot-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for quickbot 0.1.1
File Interpreter ABI Platform Actions
quickbot-0.1.1-py3-none-any.whl Python 3 none any Details for quickbot-0.1.1-py3-none-any.whl

Total release size: 157.1 kB

Release files / quickbot-0.1.1.tar.gz

Download URL quickbot-0.1.1.tar.gz
Size 65.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ff3e6cc8e6b94c7c39e7ad81f9a58b0ddf0086b179901ffec3fdce02d6cfef05
BLAKE2b-256 checksum
How to use checksums
b0b4a3929c7ac203459a7199f24d7c2c75f26a2ac311a9e7a45259a42b8188da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / quickbot-0.1.1-py3-none-any.whl

Download URL quickbot-0.1.1-py3-none-any.whl
Size 91.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea07658aad3b2088f53d4798cec11b135e8f390ee06b20d339f4b90d7722fbf0
BLAKE2b-256 checksum
How to use checksums
e6bd3016a8d23698ac149909c08554cb30399f65ccf1d72f3c6c59f8cd47018b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Security for quickbot 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page