Create most popular widgets for aiogram 3 in few code lines
Project description
aiogram_widgets
Create most popular widgets for aiogram 3x in a few code lines
🔗 Links
Features
- Fully customizable widgets
- Stateless
- Automatic handling
- Supports aiogram ^3.0.0b1
Roadmap
-
Checkboxes and multiselect
-
Calendar
-
Aiogram 2x support
Changelog
Version 1.2.5:
- Pagination key is automatically unique now
- Added the ability to adjust buttons passing tuple of sizes (works the similar way as in InlineKeyboardBuilder.adjust) in keyboard pagination
Version 1.2.4:
- Fixed aiogram dependency bug
Version 1.2.3:
- Fixed typings at Python 3.9
pagination_key
now is not required- Better types naming
Version 1.2.2:
- Custom pagination keyboard support
- Aiogram 3.0.0b8 support
- README with more examples
- Live bot example with source code
- Better types naming
Installation
Pip:
pip install aiogram_widgets
Poetry:
poetry add aiogram_widgets
🤖 Bot example | Bot source code ⚙️
Usage/Examples
Simple keyboard pagination
from aiogram_widgets.pagination import KeyboardPaginator
@router.message(F.text == "/keyboard_pagination")
async def keyboard_pagination(message: Message):
buttons = [
InlineKeyboardButton(text=f"Button {i}", callback_data=f"button_{i}")
for i in range(1, 1001)
]
paginator = KeyboardPaginator(
data=buttons,
per_page=20,
per_row=2
)
await message.answer(text="Keyboard pagination", reply_markup=paginator.as_markup())
Keyboard pagination with additional buttons (Same with text pagination)
from aiogram_widgets.pagination import KeyboardPaginator
@router.message(F.text == "/kb_additional_buttons")
async def kb_additional_buttons(message: Message):
buttons = [
InlineKeyboardButton(text=f"Button {i}", callback_data=f"button_{i}")
for i in range(1, 1001)
]
additional_buttons = [
[
InlineKeyboardButton(text="Go back 🔙", callback_data="go_back"),
]
]
paginator = KeyboardPaginator(
data=buttons,
additional_buttons=additional_buttons,
per_page=20,
per_row=2
)
await message.answer(
text="Keyboard pagination with additional buttons",
reply_markup=paginator.as_markup(),
)
Keyboard pagination with custom pagination buttons (Same with text pagination)
@router.message(F.text == "/kb_custom_pagination")
async def kb_custom_pagination(message: Message):
text_data = [f"I am string number {i}" for i in range(1, 1001)]
pagination_buttons = [
None, "<-", "->", None
]
paginator = TextPaginator(
data=text_data,
pagination_buttons=pagination_buttons,
)
current_text_chunk, reply_markup = paginator.current_message_data
await message.answer(
text=current_text_chunk,
reply_markup=reply_markup,
)
Simple text pagination
from aiogram_widgets.pagination import TextPaginator
@router.message(F.text == "/text_pagination")
async def text_pagination(message: Message):
text_data = [
f"I am string number {i}"
for i in range(1, 1001)
]
paginator = TextPaginator(
data=text_data,
)
current_text_chunk, reply_markup = paginator.current_message_data
await message.answer(
text=current_text_chunk,
reply_markup=reply_markup,
)
Text pagination with custom join
@router.message(F.text == "/text_join")
async def text_custom_join(message: Message):
text_data = [f"I am string number {i}" for i in range(1, 1001)]
paginator = TextPaginator(
data=text_data,
join_symbol="\n\n",
)
current_text_chunk, reply_markup = paginator.current_message_data
await message.answer(
text=current_text_chunk,
reply_markup=reply_markup,
)
Feedback
I would be very pleased for a star ⭐️
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
aiogram_widgets-1.2.5.tar.gz
(6.4 kB
view hashes)
Built Distribution
Close
Hashes for aiogram_widgets-1.2.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1254e9c2152eb60feb647db8f5b5f52854d3d4dc219b71505a6041718c469d4 |
|
MD5 | c278a09a5b94de48528ab74257394421 |
|
BLAKE2b-256 | a9098f6bbfacbe09c3dc592d3769abe1258220e4af18efce985513ff7989f7db |