Skip to main content

Modern Async Telegram framework for bot building

Project description

Mubble 1.6.0 (stable)

Downloads Downloads

Github Examples

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

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

mubble-1.6.0.tar.gz (598.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mubble-1.6.0-py3-none-any.whl (252.7 kB view details)

Uploaded Python 3

File details

Details for the file mubble-1.6.0.tar.gz.

File metadata

  • Download URL: mubble-1.6.0.tar.gz
  • Upload date:
  • Size: 598.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for mubble-1.6.0.tar.gz
Algorithm Hash digest
SHA256 a257fa2d63c4d70ceac2862e62b2d17e80f55370c77b9dafe5f639b249ae4284
MD5 c16bd51d98777556b231ed2a04555795
BLAKE2b-256 b2b3d8d798049ce11410429b5d63f5733eaece490f86e315e6374957eb6718c7

See more details on using hashes here.

File details

Details for the file mubble-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: mubble-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 252.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for mubble-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a811f1174f7b8216424dc70a79ed1a124bd3b2f6754c258c1e2b0169f133e923
MD5 7f90643130a72ba21bd7397fd07826e9
BLAKE2b-256 bf74cfc98669b376a44e848c5fe830200f97434d9fcbbb834fabf1c541de7659

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page