Async Python SDK for building bots on the ONEMIX messenger platform (aiogram-style)
Project description
ONEMIX Bot SDK
Асинхронная Python-библиотека для создания ботов в мессенджере ONEMIX. API намеренно повторяет aiogram 3.x — если вы писали ботов для Telegram, здесь всё знакомо.
Установка
pip install onemix-bot
Получение токена
Откройте чат с BotFather в ONEMIX, отправьте /newbot, задайте имя и
username — получите токен. Токен также доступен по команде /token.
Быстрый старт
import asyncio
from onemix_bot import Bot, Dispatcher
from onemix_bot.filters import Command, CommandStart, F
from onemix_bot.types import Message, InlineKeyboardBuilder
bot = Bot(token="ВАШ_ТОКЕН", api_url="https://api.onemix.me")
dp = Dispatcher()
@dp.message(CommandStart())
async def start(message: Message):
kb = InlineKeyboardBuilder()
kb.button(text="📖 Помощь", callback_data="help")
kb.button(text="🌐 Сайт", url="https://onemix.me")
kb.adjust(2)
await message.answer(
f"Привет, {message.from_user.full_name}! Я бот на ONEMIX.",
reply_markup=kb.as_markup(),
)
@dp.message(Command("help"))
async def help_handler(message: Message):
await message.answer("Команды: /start, /help")
@dp.message(F.text)
async def echo(message: Message):
await message.answer(f"Вы написали: {message.text}")
if __name__ == "__main__":
dp.run_polling(bot)
Фильтры
from onemix_bot.filters import Command, CommandStart, Text, F
@dp.message(CommandStart()) # /start
@dp.message(Command("help", "info")) # /help или /info
@dp.message(Text("привет")) # точное совпадение текста
@dp.message(F.text) # любое текстовое сообщение
@dp.message(F.text.startswith("/")) # текст, начинающийся с /
@dp.message(F.text.contains("ошибка")) # содержит подстроку
@dp.message(F.text.regexp(r"\d{4}")) # совпадение по регулярке
Фильтры комбинируются через & и |:
@dp.message(F.text.startswith("куп") & F.text.contains("билет"))
async def buy(message: Message):
...
Инлайн-клавиатуры
from onemix_bot.types import InlineKeyboardMarkup, InlineKeyboardButton, InlineKeyboardBuilder
# через билдер
kb = InlineKeyboardBuilder()
kb.button(text="Да", callback_data="yes")
kb.button(text="Нет", callback_data="no")
kb.adjust(2) # 2 кнопки в ряд
await message.answer("Подтвердить?", reply_markup=kb.as_markup())
# вручную
markup = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="Открыть сайт", url="https://onemix.me")],
])
Конечный автомат (FSM)
from onemix_bot.filters import Command
from onemix_bot.fsm import State, StatesGroup, FSMContext, StateFilter
from onemix_bot.types import Message
class Form(StatesGroup):
name = State()
age = State()
@dp.message(Command("form"))
async def form_start(message: Message, state: FSMContext):
await state.set_state(Form.name)
await message.answer("Как тебя зовут?")
@dp.message(StateFilter(Form.name))
async def form_name(message: Message, state: FSMContext):
await state.update_data(name=message.text)
await state.set_state(Form.age)
await message.answer("Сколько тебе лет?")
@dp.message(StateFilter(Form.age))
async def form_age(message: Message, state: FSMContext):
data = await state.update_data(age=message.text)
await state.clear()
await message.answer(f"Готово! Имя: {data['name']}, возраст: {data['age']}")
Роутеры
Раскладывайте хэндлеры по модулям, как в aiogram:
# handlers/payments.py
from onemix_bot import Router
from onemix_bot.filters import Command
router = Router()
@router.message(Command("pay"))
async def pay(message):
await message.answer("Оплата...")
# main.py
from onemix_bot import Dispatcher
from handlers import payments
dp = Dispatcher()
dp.include_router(payments.router)
Команды бота (автоподсказки /)
@dp.startup
async def on_start(bot: Bot):
await bot.set_commands([
{"command": "start", "description": "Запустить бота"},
{"command": "help", "description": "Помощь"},
])
После этого команды показываются автоподсказками при вводе / в чате с ботом.
API-методы
me = await bot.get_me()
await bot.send_message(chat_id, "текст", reply_markup=..., parse_mode="markdown")
updates = await bot.get_updates()
await bot.set_commands([...])
Простой синхронный клиент (legacy)
Для несложных ботов доступен синхронный класс без async:
from onemix_bot.legacy import OnemixBot
bot = OnemixBot(token="ВАШ_ТОКЕН", api_url="https://api.onemix.me")
@bot.command("start")
def on_start(msg):
bot.reply(msg, "Привет!")
bot.run()
Лицензия
MIT
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 onemix_bot-2.0.3.tar.gz.
File metadata
- Download URL: onemix_bot-2.0.3.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcfbb4973f21b4049f22259e4a97b31029b2c7113f267c2b75091023506f964e
|
|
| MD5 |
0b260a93ec75e463d564dbfeb3ac62a6
|
|
| BLAKE2b-256 |
537740ade7c5f1219a3b8a61b0b921de35398b7fc804df5d626a8b11062ed99c
|
File details
Details for the file onemix_bot-2.0.3-py3-none-any.whl.
File metadata
- Download URL: onemix_bot-2.0.3-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e75483a1e8795a6f24b7f0324f886b79b47d88024035ec2a5a9e7f122d62b8cd
|
|
| MD5 |
9256b7ed11768eb205e4e0264dffd973
|
|
| BLAKE2b-256 |
2cb5820ec71e4a131765854fac574db986962027a14df677cec824912ddda41c
|