Открытый Bot API и асинхронный Python SDK в стиле aiogram — хэндлеры, фильтры, инлайн-кнопки, FSM. Готовый каталог ботов. Автоматизируйте что угодно — от напоминалок до нейросетевых ассистентов.
Лучшие проекты сообщества. Запустите чат с ботом в один тап или опубликуйте своего через @botfather.
От первого бота до продакшена с вебхуками и OpenAI-интеграцией. Всё что нужно — на одной странице.
Создание бота для ONEMIX занимает буквально несколько минут:
/newbot. Следуйте подсказкам — получите токен и запускайте.Требования:
pip install onemix-bot
from onemix_bot import Bot, Dispatcher
from onemix_bot.filters import CommandStart
# api_url не обязателен — по умолчанию https://api.onemix.me
bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher()
@dp.message(CommandStart())
async def handle_start(message):
await message.answer("Привет! Я бот ONEMIX")
@dp.message()
async def handle_message(message):
await message.answer(f"Вы написали: {message.text}")
dp.run_polling(bot)
Команды @botfather:
/newbot — Создать нового бота/mybots — Список ваших ботов/setname — Изменить имя/setdescription — Изменить описание/setcommands — Настроить меню команд/deletebot — Удалить бота/token — Получить токен API{
"name": "My Bot",
"username": "my_cool_bot",
"description": "Мой первый бот",
"category": "utility"
}
{
"id": "uuid",
"username": "my_cool_bot",
"api_token": "uuid:hex",
"message": "Бот @my_cool_bot создан!"
}
bot или _bot. Минимальная длина — 5 символов.Каждый запрос к Bot API должен содержать заголовок с токеном:
Authorization: Bot YOUR_BOT_TOKEN
{
"chat_id": "bot-chat-uuid",
"text": "Привет от бота!"
}
{
"ok": true,
"message_id": "msg-uuid"
}
{
"ok": true,
"result": [
{
"id": "msg-uuid",
"bot_chat_id": "chat-uuid",
"sender_type": "user",
"content": "/start",
"user_id": "user-uuid",
"user_name": "Иван"
}
]
}
Вместо long-polling можно принимать обновления на ваш сервер через вебхуки — быстрее и эффективнее для продакшена.
{
"url": "https://ваш-сервер.com/webhook",
"secret": "optional_secret"
}
При новом сообщении сервер ONEMIX отправит POST-запрос:
{
"update_type": "message",
"message": {
"id": "msg-uuid",
"bot_chat_id": "chat-uuid",
"content": "Текст",
"user_id": "user-uuid",
"user_name": "Иван"
}
}
{
"commands": [
{"command": "start", "description": "Запуск"},
{"command": "help", "description": "Помощь"}
]
}
onemix-botАсинхронная библиотека в стиле aiogram 3.x: Bot + Dispatcher, хэндлеры с фильтрами, инлайн-кнопки и FSM. Адрес сервера по умолчанию — https://api.onemix.me, отдельно указывать не нужно. Установка: pip install onemix-bot (обновление — pip install -U onemix-bot).
from onemix_bot import Bot, Dispatcher
# api_url по умолчанию https://api.onemix.me
bot = Bot(token="TOKEN")
dp = Dispatcher()
me = await bot.get_me() # Информация о боте
await bot.send_message(chat_id, "текст") # Отправка
await msg.answer("текст") # Ответ в тот же чат
await msg.reply("текст") # Ответ-реплай на сообщение
await bot.set_my_commands([...]) # Меню команд
dp.run_polling(bot) # Запуск (long-polling)
from onemix_bot.filters import Command, CommandStart, F
@dp.message(CommandStart())
async def on_start(msg):
await msg.answer("Добро пожаловать!")
@dp.message(Command("help"))
async def on_help(msg):
await msg.answer("Список команд: /start, /help")
@dp.message(F.text.contains("привет"))
async def on_hello(msg):
await msg.answer("Привет!")
@dp.message() # ловит всё остальное
async def on_text(msg):
await msg.answer(f"Эхо: {msg.text}")
from onemix_bot import InlineKeyboardBuilder
from onemix_bot.filters import CommandStart
@dp.message(CommandStart())
async def start(msg):
kb = InlineKeyboardBuilder()
kb.button(text="Открыть сайт", url="https://onemix.me")
kb.button(text="Нажми меня", callback_data="hello")
kb.adjust(1) # по одной кнопке в ряд
await msg.answer("Выбери действие:", reply_markup=kb.as_markup())
from onemix_bot import Bot, Dispatcher
from onemix_bot.filters import CommandStart
bot = Bot(token="TOKEN")
dp = Dispatcher()
@dp.message(CommandStart())
async def start(msg):
await msg.answer("Отправь текст.")
@dp.message()
async def echo(msg):
await msg.answer(msg.text)
dp.run_polling(bot)
import asyncio
from onemix_bot import Bot, Dispatcher
from onemix_bot.filters import Command
bot = Bot(token="TOKEN")
dp = Dispatcher()
@dp.message(Command("remind"))
async def remind(msg):
parts = msg.text.split(" ", 2)
if len(parts) < 3:
await msg.answer("Формат: /remind [мин] [текст]")
return
mins, text = int(parts[1]), parts[2]
await msg.answer(f"Напомню через {mins} мин.")
async def do():
await asyncio.sleep(mins * 60)
await msg.answer(f"Напоминание: {text}")
asyncio.create_task(do())
dp.run_polling(bot)
import openai
from onemix_bot import Bot, Dispatcher
bot = Bot(token="TOKEN")
dp = Dispatcher()
client = openai.AsyncOpenAI(api_key="sk-...")
@dp.message()
async def ai(msg):
r = await client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": msg.text}],
max_tokens=500)
await msg.answer(r.choices[0].message.content)
dp.run_polling(bot)
Откройте ONEMIX, напишите @botfather и получите токен за 30 секунд.