Metadata-Version: 2.4
Name: solobot-vkteams
Version: 0.2.1
Summary: Async framework for VK Teams bots (aiogram-style)
Project-URL: Homepage, https://solo-log.ru/projects/solobot-vkteams
Project-URL: Repository, https://github.com/gold-goblin/solobot-vkteams
Project-URL: Bug Tracker, https://github.com/gold-goblin/solobot-vkteams/issues
Project-URL: Changelog, https://github.com/gold-goblin/solobot-vkteams/releases
Author-email: Evgeniy Solovev <admin@solo-log.ru>
License-Expression: MIT
License-File: LICENSE
Keywords: async,bot,framework,myteam,vk-teams,vkteams
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: aiohttp>=3.9
Provides-Extra: dev
Requires-Dist: mypy>=1.8; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.3; extra == 'dev'
Description-Content-Type: text/markdown

# solobot-vkteams

Асинхронный Python-фреймворк для создания ботов VK Teams (Mail.ru / ICQ), вдохновлённый [aiogram](https://github.com/aiogram/aiogram).

## Возможности

- **API в стиле aiogram** — Bot → Dispatcher → Router → Handlers
- **Фильтры** — `Command`, `Regexp`, `ChatTypeFilter`, `CallbackData`, `HasFile`, `HasImage`, `IsReply`, `IsForward` и другие
- **Magic Filter** — цепочки атрибутов вида `F.text.startswith("привет")`
- **FSM** — конечный автомат с `State` / `StatesGroup` и подключаемым хранилищем (`MemoryStorage`)
- **Треды (Threads)** — создание и работа с обсуждениями в чатах
- **Middleware** — внешние и внутренние middleware для каждого роутера
- **Inline-клавиатуры** — удобный API для построения кнопок
- **Полностью асинхронный** — построен на `aiohttp`
- **Типизированный** — включает `py.typed`, совместим с mypy / pyright

## Установка

```bash
pip install solobot-vkteams
```

## Быстрый старт

```python
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-клавиатуры

```python
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 (конечный автомат)

```python
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("Сколько вам лет?")
```

## Треды (Threads)

```python
from solobot_vkteams import Thread

# Создание треда
@router.message(Command("createthread"))
async def cmd_create_thread(event: Message, bot: Bot):
    thread = await event.add_thread()
    await thread.send_text("👋 Обсуждение начато!")

# Отправка сообщения в тред
await bot.send_text(
    chat_id=thread_id,
    text="Сообщение в треде"
)
```

## Требования

- Python 3.12+
- aiohttp >= 3.9

## Лицензия

[MIT](LICENSE)
