aiogram-compatible SDK for Messenger001 Bot API — migrate your Telegram bot in one import change, or run dual-transport (TG + M001 in one codebase)
Project description
messenger001-aiogram
aiogram-совместимый SDK для Messenger001 Bot API. Перенеси свой Telegram-бот на aiogram в Messenger001 заменой одного импорта — или запусти один codebase в двух мессенджерах одновременно.
Beta. API стабилизируется. Используй для пилотов и экспериментов.
Установка
# Только M001:
pip install messenger001-aiogram
# Dual-transport (TG + M001 в одной кодовой базе):
pip install messenger001-aiogram[telegram]
Сценарий 1 — миграция TG-бота в Messenger001
- from aiogram import Bot, Dispatcher, F
- from aiogram.filters import Command, CommandStart
- from aiogram.types import Message, CallbackQuery
- from aiogram.utils.keyboard import InlineKeyboardBuilder
+ from messenger001_aiogram import Bot, Dispatcher, F, InlineKeyboardBuilder
+ from messenger001_aiogram.filters import Command, CommandStart
+ from messenger001_aiogram.types import Message, CallbackQuery
Handlers, фильтры, клавиатуры (inline + reply), FSM — без изменений.
Сценарий 2 — один codebase для TG и M001
# Импортируй из dual-submodule везде:
from messenger001_aiogram.dual import Bot, Dispatcher, F, Router
from messenger001_aiogram.dual.filters import Command, CommandStart
from messenger001_aiogram.dual.types import Message, CallbackQuery
from messenger001_aiogram.dual.keyboards import InlineKeyboardBuilder, ReplyKeyboardMarkup
from messenger001_aiogram.dual.fsm import State, StatesGroup, FSMContext, MemoryStorage
# Handlers пишутся ОДИН раз — работают в обоих транспортах:
@dp.message(Command("start"))
async def start(msg: Message):
await msg.answer("Привет!")
Транспорт выбирается переменной окружения TRANSPORT:
TRANSPORT |
Что используется под капотом | Token env |
|---|---|---|
telegram (default) |
aiogram (long-polling или webhook) | TELEGRAM_TOKEN |
m001 |
messenger001-aiogram (webhook) | M001_TOKEN |
Один docker-image, два деплоя: запусти две инстанции с разными TRANSPORT и токенами — handler-код общий.
Пример
import asyncio, os
from messenger001_aiogram import Bot, Dispatcher, F, InlineKeyboardBuilder, Message, start_webhook
from messenger001_aiogram.filters import CommandStart
dp = Dispatcher()
@dp.message(CommandStart())
async def start(msg: Message):
kb = InlineKeyboardBuilder()
kb.button(text="Ping", callback_data="ping")
await msg.answer("Привет!", reply_markup=kb.as_markup())
async def main():
async with Bot(token=os.environ["M001_TOKEN"]) as bot:
await start_webhook(dp, bot, port=8080)
asyncio.run(main())
См. examples/echo_bot.py для полного примера.
Меню команд
Зарегистрируй команды бота — в чате с ботом появится кнопка меню слева от поля ввода, /команды в тексте станут кликабельными, а ввод / покажет автокомплит.
from messenger001_aiogram import BotCommand
async with Bot(token=TOKEN) as bot:
await bot.set_my_commands([
BotCommand(command="start", description="Начать работу"),
BotCommand(command="help", description="Помощь"),
])
Что поддерживается (v0.1)
| aiogram | messenger001-aiogram |
|---|---|
Bot(token) |
✅ |
bot.send_message / send_photo / send_document / send_video / send_audio |
✅ |
bot.edit_message_text / edit_message_reply_markup |
✅ |
bot.answer_callback_query / send_chat_action / get_me |
✅ |
bot.set_my_commands / get_my_commands / delete_my_commands |
✅ |
Dispatcher, Router, include_router |
✅ |
@dp.message(...), @dp.callback_query(...) |
✅ |
Command, CommandStart(deep_link=True) |
✅ |
F.data == "...", F.text.startswith(...) |
✅ (подмножество) |
InlineKeyboardBuilder, InlineKeyboardMarkup |
✅ |
State, StatesGroup, FSMContext, MemoryStorage |
✅ |
| Webhook receiver (aiohttp) + HMAC-verify | ✅ |
Reply-клавиатура (ReplyKeyboardMarkup) |
✅ Telegram-style панель над input bar |
parse_mode="HTML" (<b>, <i>, <a href>, <code>, и т.д.) |
✅ парсится на backend в MessageEntity[] (как Telegram MTProto) |
bot.start_polling(...) |
❌ (M001 — webhook-only) |
| Forwarding, polls, stickers | ❌ (нет на платформе) |
Подключение
-
Создай бота. Открой в Messenger001 чат с @botfather →
/newbot→ получи токен. Сохрани его в env-переменнуюM001_TOKEN. -
Напиши код бота. Используй пример выше или скопируй examples/echo_bot.py.
-
Запусти бота на сервере с публичным HTTPS (VPS, Railway, Render, Fly.io). Скрипт должен слушать
POST /webhookна публично доступном URL. Для production используй systemd / supervisor / docker, чтобы процесс автоматически рестартился.python your_bot.py -
Зарегистрируй webhook у @botfather. В том же чате:
/mybots→ выбери бота → «Webhook URL» → укажиhttps://your-host/webhook. -
Готово. Пиши боту в Messenger001 — он отвечает.
Документация
См. также:
- docs/getting-started.md — пошаговый «hello world» от установки до первого ответа.
- docs/migration-from-aiogram.md — гид по переезду существующего TG-бота.
- docs/api-reference.md — таблица соответствия aiogram API ↔ messenger001-aiogram API.
- docs/webhook-spec.md — техническое описание webhook protocol и Bot API endpoints.
Лицензия
MIT © Marat Khusainov
Project details
Release history Release notifications | RSS feed
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 messenger001_aiogram-0.1.0b3.tar.gz.
File metadata
- Download URL: messenger001_aiogram-0.1.0b3.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d1f0f15e3dd0e1ca84028f3f1a9e2466fd8ba76358aa14a9353d79ba086d6bc
|
|
| MD5 |
d0fcd84df2d22fcadae580943df6419a
|
|
| BLAKE2b-256 |
70b6b0811aae9324908d7981f0be749687499f56e84985f529975f6ce29c8805
|
File details
Details for the file messenger001_aiogram-0.1.0b3-py3-none-any.whl.
File metadata
- Download URL: messenger001_aiogram-0.1.0b3-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab2ffd7501dfcfa681101459ce346033f3cc7c359b2c8440c5a81febef0c50d5
|
|
| MD5 |
772ccaab1fd7724b7afdc73a9097ee6b
|
|
| BLAKE2b-256 |
e53667ff93a38baab7a6345a824bbe3fcd9765e5316730306a14aea0d93d5760
|