Zurück zur Startseite

obabot für Telegram- und Max-Bots

obabot — asynchrone Python-Bibliothek zum Starten von Bots in Telegram und Max mit einer einzigen aiogram-kompatiblen API. Unterstützt FSM, Filter, Tastaturen. Migration ist minimal, Testmodus ohne Tokens.

Einen Bot in Telegram und Max mit obabot starten
Advertisement 728x90

obabot: Universelle Bibliothek für Telegram- und Max-Bots

Die obabot-Bibliothek ermöglicht es Ihnen, einen einzigen asynchronen Python-Bot gleichzeitig auf Telegram und Max bereitzustellen. Ihre API ist vollständig kompatibel mit aiogram 3.x: Sie nutzt aiogram nativ für Telegram und einen Adapter für Max, der Events in kompatible Objekte umwandelt. Die Installation ist ein Einzeiler: pip install obabot aiogram>=3.0.0 umaxbot>=0.1.7.

Die Kernfunktion create_bot() nimmt Plattform-Token entgegen und gibt ein Tupel (bot, dispatcher, router) zurück. Nachrichten-Handler werden einheitlich geschrieben, unabhängig von der Plattform.

Beispiele für die Initialisierung

Für Telegram:

Google AdInline article slot
from obabot import create_bot
from obabot.filters import Command

bot, dp, router = create_bot(tg_token="YOUR_TG_TOKEN")

@router.message(Command("start"))
async def start(message):
    await message.answer(f"Hi from {message.platform}!")

await dp.start_polling(bot)

Für Max:

from obabot import create_bot
from obabot.filters import Command

bot, dp, router = create_bot(max_token="YOUR_MAX_TOKEN")

@router.message(Command("start"))
async def start(message):
    await message.answer(f"Hi from {message.platform}!")

await dp.start_polling(bot)

Für beide Plattformen parallel:

from obabot import create_bot
from obabot.filters import Command

bot, dp, router = create_bot(
    tg_token="YOUR_TG_TOKEN",
    max_token="YOUR_MAX_TOKEN"
)

@router.message(Command("start"))
async def start(message):
    await message.answer(f"Hi from {message.platform}!")

await dp.start_polling(bot)

Das Attribut message.platform gibt "telegram" oder "max" zurück – ideal für plattformspezifische Logik.

Google AdInline article slot

Migration von aiogram

Der Wechsel von purem aiogram 3.x erfordert minimale Änderungen: Ersetzen Sie einfach die Imports und verwenden Sie create_bot() statt separater Bot, Dispatcher und Router.

Originaler aiogram-Code:

from aiogram import Bot, Dispatcher, Router
from aiogram.filters import Command
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext

bot = Bot(token="TOKEN")
dp = Dispatcher()
router = Router()
dp.include_router(router)

@router.message(Command("start"))
async def start(message):
    await message.answer("Hi!")

await dp.start_polling(bot)

Nach der Migration:

Google AdInline article slot
from obabot import create_bot
from obabot.filters import Command
from obabot.fsm import State, StatesGroup, FSMContext

bot, dp, router = create_bot(tg_token="TOKEN")

@router.message(Command("start"))
async def start(message):
    await message.answer("Hi!")

await dp.start_polling(bot)

Der Rest Ihres Codes – inklusive FSM, Filter und Tastaturen – bleibt exakt gleich.

Message-Interface und Basis-Methoden

Alle Message-Objekte teilen eine einheitliche Schnittstelle:

  • message.text — Text
  • message.from_user — Absender
  • message.chat — Chat
  • message.message_id — ID
  • message.platform — Plattform

Methoden:

  • await message.answer("Antwort")
  • await message.reply("Antwort auf Nachricht")
  • await message.delete()
  • await message.edit_text("Neuer Text")

FSM: Zustandsmaschine

FSM funktioniert genau wie bei aiogram:

from obabot.fsm import State, StatesGroup, FSMContext

class Form(StatesGroup):
    name = State()
    age = State()

@router.message(Command("start"))
async def start(message, state: FSMContext):
    await state.set_state(Form.name)
    await message.answer("Wie heißt du?")

@router.message(Form.name)
async def process_name(message, state: FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(Form.age)
    await message.answer("Wie alt bist du?")

Inline-Tastaturen und Filter

Tastatur erstellen:

from obabot.types import InlineKeyboardMarkup, InlineKeyboardButton

keyboard = InlineKeyboardMarkup(inline_keyboard=[
    [
        InlineKeyboardButton(text="Button 1", callback_data="btn1"),
        InlineKeyboardButton(text="Button 2", callback_data="btn2"),
    ]
])

await message.answer("Wähle einen:", reply_markup=keyboard)

Filter:

  • @router.message(Command("start", "help")) — mehrere Befehle
  • @router.message(F.text.startswith("!")) — Präfix
  • @router.message(F.photo) — Fotos
  • @router.callback_query(F.data == "click") — Callbacks

Testen ohne Token

test_mode=True überspringt alle Netzwerkaufrufe:

bot, dp, router = create_bot(test_mode=True)

Unterstützt Python 3.10–3.14, aiogram 3.0.0–3.24. Volle Unit-Test-Abdeckung.

Das Wichtigste

  • Ein Codebase: Ein Handler für Telegram und Max – keine Adapter nötig.
  • Vollständige Kompatibilität: 100% aiogram 3.x API + platform-Attribut.
  • FSM und Filter: Voller Support für Zustände, Inline-Tastaturen, Magic-Filter F.
  • Einfache Migration: Zwei Import-Zeilen und Initialisierung austauschen.
  • Testen: Isolierter Modus ohne API-Aufrufe.

— Editorial Team

Advertisement 728x90

Weiterlesen