A minimalistic UI framework for aiogram bots.
Project description
aiogramui 1.1.1
✨ A minimalistic UI framework for aiogram bots. Devlog - https://t.me/aiogramui/
Installation
pip install aiogramui
Documentation
Pages
Let's create start page and child page "Wallet":
from aiogramui import *
init(router)
startpage = Root('start', backtext='Back')
wallet = startpage.page('Wallet')
@startpage
@router.message(Command('start'))
async def on_start(msg: Message, keyboard=None):
await msg.answer('start page', reply_markup=startpage.keyboard(msg).as_markup())
@wallet
async def on_wallet(msg: Message, keyboard=None):
await msg.answer('wallet page', reply_markup=keyboard.as_markup())
register()
init() and register() are required. Root() - a root page that doesn't have back button. All pages has elements functions, to learn more about them, keep read.
Elements
Dialog
Root.dialog(text, *filters)
Usage:
users = {
'evr4': '1234',
'evryoneowo': '1337',
'bestusr': '111111'
}
login = start.dialog('Log in')
@passwd.arg('Enter your login')
async def on_login(msg: Message, args):
login = args[0]
if login not in users: return # If user entered not valid login then it will ask him again.
@passwd.arg('Enter the password')
async def on_passwd(msg: Message, args):
password = users[args[0]]
entered_password = args[1]
if password != entered_password: await login.cancel(msg) # If user entered not valid password then it will cancel dialog.
await msg.answer(f'Welcome, {args[0]}!')
Button
Root.button(text, *filters)
Usage:
hwbtn = start.button('Click me')
@hwbtn
async def on_hwbtn(msg: Message):
await msg.answer('Hello, World!')
Checkbox
Root.checkbox(off, on, *filters, default=False)
Usage:
checkbox = start.checkbox('off', 'on')
@checkbox
async def on_checkbox(msg: Message, state):
await msg.answer(f'State: {state}')
You can also save values of checkboxes for loading them later using users arg in checkbox().
Handle
handle(cqdata, *filters)
Usage: If you has inline keyboard with cqdata "delete" that deletes message:
@handle(data == 'hi')
async def on_hi(cq: CallbackQuery):
await cq.message.delete()
Filters
You can use filters at pages or elements. e. g.
from aiogramui.filters import UserFilter
admins = [12453, 21546, 69283]
adminpage = start.page('Admin', UserFilter(admin))
@adminpage
async def on_adminpage(msg: Message, keyboard):
await msg.answer('Admin page', reply_markup=keyboard.as_markup())
Doc
doc = start.generate_doc()
It will generate docs of your menu using docstrings for descriptions.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiogramui-1.1.1.tar.gz.
File metadata
- Download URL: aiogramui-1.1.1.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
780ed41b1f997dc578be76e1ee1d437dd6034645d5218aeb71304a5bc2ff394b
|
|
| MD5 |
471cb2ddb42db6c1e5779da8748a00f9
|
|
| BLAKE2b-256 |
96d63f8d3e87e4d6d3ef69c9ca23da98b84f528c379719d70a312c1ab599482a
|
File details
Details for the file aiogramui-1.1.1-py3-none-any.whl.
File metadata
- Download URL: aiogramui-1.1.1-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eb5673fee55759a118a53a6b28390c9c27191195a2510363d5bd5891c10b6a0
|
|
| MD5 |
af505bacbb71e7afa1a6a5cc8b3b3428
|
|
| BLAKE2b-256 |
d97f91b52c80a412950b559cfadd42888e3fd2fb74c098a6414a550ee6a96f13
|