Async framework for VK Teams bots (aiogram-style)
Project description
solobot-vkteams
Асинхронный Python-фреймворк для создания ботов VK Teams (Mail.ru / ICQ), вдохновлённый aiogram.
Возможности
- API в стиле aiogram — Bot → Dispatcher → Router → Handlers
- Фильтры —
Command,Regexp,ChatTypeFilter,CallbackData,HasFile,HasImage,IsReply,IsForwardи другие - Magic Filter — цепочки атрибутов вида
F.text.startswith("привет") - FSM — конечный автомат с
State/StatesGroupи подключаемым хранилищем (MemoryStorage) - Middleware — внешние и внутренние middleware для каждого роутера
- Inline-клавиатуры — удобный API для построения кнопок
- Полностью асинхронный — построен на
aiohttp - Типизированный — включает
py.typed, совместим с mypy / pyright
Установка
pip install solobot-vkteams
Быстрый старт
import asyncio
from solobot_vkteams import Bot, Dispatcher, Router, Message, Command, F
TOKEN = "YOUR_TOKEN_HERE"
API_URL = "https://myteam.mail.ru/bot/v1"
bot = Bot(token=TOKEN, api_url_base=API_URL)
dp = Dispatcher()
router = Router()
@router.message(Command("start"))
async def on_start(event: Message, bot: Bot):
await event.answer("Привет!")
@router.message(F.text)
async def on_text(event: Message, bot: Bot):
await event.reply(f"Вы написали: {event.text}")
dp.include_router(router)
asyncio.run(dp.run_polling(bot))
Inline-клавиатуры
from solobot_vkteams import InlineKeyboardMarkup, InlineKeyboardButton
kb = InlineKeyboardMarkup()
kb.row(
InlineKeyboardButton(text="Да", callback_data="yes"),
InlineKeyboardButton(text="Нет", callback_data="no"),
)
await bot.send_text(chat_id=chat_id, text="Выберите:", inline_keyboard_markup=kb)
FSM (конечный автомат)
from solobot_vkteams import State, StatesGroup, FSMContext
class Form(StatesGroup):
name = State()
age = State()
@router.message(Command("form"))
async def start_form(event: Message, bot: Bot, state: FSMContext):
await state.set_state(Form.name)
await event.answer("Как вас зовут?")
@router.message(Form.name)
async def process_name(event: Message, bot: Bot, state: FSMContext):
await state.update_data(name=event.text)
await state.set_state(Form.age)
await event.answer("Сколько вам лет?")
Требования
- Python 3.12+
- aiohttp >= 3.9
Лицензия
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
solobot_vkteams-0.1.0.tar.gz
(15.6 kB
view details)
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 solobot_vkteams-0.1.0.tar.gz.
File metadata
- Download URL: solobot_vkteams-0.1.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31fbfdeef1b644619af30cd9c924b99b93e150650ecdabbfded8a14d91722844
|
|
| MD5 |
d96f8130a515a22af979ccd9687d0c25
|
|
| BLAKE2b-256 |
d51c82d2851ee9582016a07afa14de2510d99fbecf201860117297788a52e3fb
|
File details
Details for the file solobot_vkteams-0.1.0-py3-none-any.whl.
File metadata
- Download URL: solobot_vkteams-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
998891e0b8f44f454909a47f0ce3e7ba2cfb8be47dbf9e67daba91813a1a0ee0
|
|
| MD5 |
5e1cd1f05bac842ce8ab8d6754d38aa3
|
|
| BLAKE2b-256 |
900a959874a087aae77b30b54bdac13f8f1a257a4f297e1cdacabae811b7ce32
|