Mubble 1.6.0 (stable)
Mubble is a next-generation framework known for its great speed and simplicity. It is written using aiohttp, asyncio, and msgspec.
(Author's words)
Make the fastest bot ever!
Speed measurement
Each test contains 100 different API calls
| Test | Mubble (sec/avg) | Aiogram (sec/avg) | Telebot (sec/avg) | Winner |
|---|---|---|---|---|
| 1 | 0.12896 | 0.30656 | 0.24000 | Mubble |
| 2 | 0.12620 | 0.14554 | 0.17649 | Mubble |
| 3 | 0.13366 | 0.14902 | 0.13141 | Mubble |
| 4 | 0.12437 | 0.14864 | 0.13717 | Mubble |
| 5 | 0.12754 | 0.15863 | 0.18894 | Mubble |
| 6 | 0.12261 | 0.15175 | 0.17157 | Mubble |
| 7 | 0.14395 | 0.16154 | 0.19383 | Mubble |
| 8 | 0.12508 | 0.15084 | 0.24207 | Mubble |
| 9 | 0.12239 | 0.14838 | 0.14282 | Mubble |
| 10 | 0.12610 | 0.14478 | 0.13068 | Mubble |
| AVG | 0.12869 | 0.16687 | 0.17550 | Mubble |
Getting started
Installing:
pip install mubble
poetry add mubble
poetry add git+https://github.com/vladislavkovalskyi/mubble.git#master
Simple bot example:
import random
from mubble import Token, API, Mubble, Message, CallbackQueryEq
from mubble.rules import StartCommand, Text, Markup, CallbackData
from mubble.tools.keyboard import InlineKeyboard, InlineButton
api = API(Token("Your token"))
bot = Mubble(api)
class Keyboard:
menu = (
InlineKeyboard()
.add(InlineButton("✍️ Write hello", callback_data="hello"))
.row()
.add(InlineButton("🍌 Choice banana", callback_data="banana"))
).get_markup()
back = (
InlineKeyboard().add(InlineButton("⬅️ Back", callback_data="menu"))
).get_markup()
@bot.on.message(StartCommand())
async def start_handler(message: Message):
await message.answer(
"👋 Hello, I'm Mubble! How can I help you?\n\n"
"My available commands:\n"
"- /start\n"
"- /menu\n"
"- /random [from number] [to number]"
)
@bot.on.message(Text("/menu"))
async def menu_handler(message: Message):
await message.answer(
"📃 Here's your menu! Use the keyboard.", reply_markup=Keyboard.menu
)
@bot.on.message(Markup(["/random", "/random <a:int> <b:int>"]))
async def random_handler(message: Message, a: int = None, b: int = None):
if None in (a, b):
await message.answer(
"🤓 Wrong syntax. You also need to write the first number and the second number."
)
return
await message.answer(f"🎲 Your random number is {random.randint(a, b)}")
@bot.on.callback_query(CallbackQueryEq("menu"))
async def menu_handler(cq: CallbackQuery):
await cq.edit_text(
"📃 Here's your menu! Use the keyboard.", reply_markup=Keyboard.menu
)
@bot.on.callback_query(CallbackQueryEq("hello"))
async def hello_handler(cq: CallbackQuery):
await cq.edit_text("👋 Hello, I'm Mubble!", reply_markup=Keyboard.back)
@bot.on.callback_query(CallbackQueryEq("banana"))
async def fruits_handler(cq: CallbackQuery):
await cq.answer("You clicked on the 🍌!")
bot.run_forever()
Слава Україні! 🇺🇦
by Vladyslav Kovalskyi
Metadata
Release files for mubble 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mubble-1.6.0.tar.gz | 598.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mubble-1.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 850.9 kB
Release files / mubble-1.6.0.tar.gz
| Download URL | mubble-1.6.0.tar.gz |
|---|---|
| Size | 598.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a257fa2d63c4d70ceac2862e62b2d17e80f55370c77b9dafe5f639b249ae4284
|
|
BLAKE2b-256 checksum How to use checksums |
b2b3d8d798049ce11410429b5d63f5733eaece490f86e315e6374957eb6718c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.28.1
|
Release files / mubble-1.6.0-py3-none-any.whl
| Download URL | mubble-1.6.0-py3-none-any.whl |
|---|---|
| Size | 252.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a811f1174f7b8216424dc70a79ed1a124bd3b2f6754c258c1e2b0169f133e923
|
|
BLAKE2b-256 checksum How to use checksums |
bf74cfc98669b376a44e848c5fe830200f97434d9fcbbb834fabf1c541de7659
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.28.1
|