Skip to main content

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

Лицензия

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

solobot_vkteams-0.1.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

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

solobot_vkteams-0.1.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

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

Hashes for solobot_vkteams-0.1.0.tar.gz
Algorithm Hash digest
SHA256 31fbfdeef1b644619af30cd9c924b99b93e150650ecdabbfded8a14d91722844
MD5 d96f8130a515a22af979ccd9687d0c25
BLAKE2b-256 d51c82d2851ee9582016a07afa14de2510d99fbecf201860117297788a52e3fb

See more details on using hashes here.

File details

Details for the file solobot_vkteams-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for solobot_vkteams-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 998891e0b8f44f454909a47f0ce3e7ba2cfb8be47dbf9e67daba91813a1a0ee0
MD5 5e1cd1f05bac842ce8ab8d6754d38aa3
BLAKE2b-256 900a959874a087aae77b30b54bdac13f8f1a257a4f297e1cdacabae811b7ce32

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