Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

onemix_bot-2.0.3.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

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

onemix_bot-2.0.3-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

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

Hashes for onemix_bot-2.0.3.tar.gz
Algorithm Hash digest
SHA256 dcfbb4973f21b4049f22259e4a97b31029b2c7113f267c2b75091023506f964e
MD5 0b260a93ec75e463d564dbfeb3ac62a6
BLAKE2b-256 537740ade7c5f1219a3b8a61b0b921de35398b7fc804df5d626a8b11062ed99c

See more details on using hashes here.

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

Hashes for onemix_bot-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e75483a1e8795a6f24b7f0324f886b79b47d88024035ec2a5a9e7f122d62b8cd
MD5 9256b7ed11768eb205e4e0264dffd973
BLAKE2b-256 2cb5820ec71e4a131765854fac574db986962027a14df677cec824912ddda41c

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