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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.