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.1.tar.gz (14.6 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.1-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file onemix_bot-2.0.1.tar.gz.

File metadata

  • Download URL: onemix_bot-2.0.1.tar.gz
  • Upload date:
  • Size: 14.6 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.1.tar.gz
Algorithm Hash digest
SHA256 4226378fedde32407610facc750cdfa8f6ed2453b15847aa9f7a40e5f19645df
MD5 6b962997b4b56ae1d9b97a08c881af91
BLAKE2b-256 f1aa551f65d6b93b8d00ccc4c31261208fe6c520aadda37bd9093a33afdbe7a9

See more details on using hashes here.

File details

Details for the file onemix_bot-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: onemix_bot-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 15.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37d8b9e7446ec248617a5d561c136cb26c836461118992e56cca79b3da37d824
MD5 cc4f7628b5ac5009751d48fe1b9b910e
BLAKE2b-256 2aea154e1252cccfe0f5a3832333d522e4fbf2126499cd4f875478886e9b473a

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