Библиотека для VK Teams ботов в стиле aiogram 3.x
Project description
aiovkteams
Асинхронная библиотека для создания ботов в VK Workspace (VK Teams) в стиле aiogram 3.x.
Установка
pip install aiovkteams
С поддержкой PostgreSQL-хранилища FSM:
pip install aiovkteams[postgres]
Быстрый старт
import asyncio
from aiovkteams.bot import Bot
from aiovkteams.dispatcher import Dispatcher
from aiovkteams.filters import Command
from aiovkteams.fsm.storage.memory import MemoryStorage
from aiovkteams.types import HandlerContext
from aiovkteams.fsm import FSMContext
bot = Bot(token="001.xxxxxxxxxx")
dp = Dispatcher(bot, storage=MemoryStorage())
@dp.message(Command("start"))
async def cmd_start(ctx: HandlerContext, fsm: FSMContext):
await ctx.reply("Привет!")
asyncio.run(dp.start_polling())
Возможности
- Polling — long polling из коробки, автоматический реконнект
- FSM — конечный автомат состояний (MemoryStorage / PostgresStorage)
- Роутеры — разбивка хендлеров по модулям (
Router) - Inline-клавиатуры — кнопки с callback, ссылками, стилями (
primary,attention) - Middleware — обработка запросов до/после хендлеров
- Фильтры —
Command,F.data,StateFilterи произвольные - Отправка файлов — загрузка изображений с кэшированием по
fileId
Примеры
Inline-клавиатура
from aiovkteams.types import InlineKeyboard
kb = (
InlineKeyboard()
.button("Подтвердить", callback_data="confirm", style="primary")
.row()
.button("Отмена", callback_data="cancel", style="attention")
)
await ctx.reply("Подтвердите действие:", inline_keyboard=kb.build())
Callback-хендлер
from aiovkteams.filters import F
@dp.callback_query(F.data == "confirm")
async def on_confirm(ctx: HandlerContext, fsm: FSMContext):
await ctx.answer_callback()
await ctx.edit_text("Подтверждено!")
FSM
from aiovkteams.fsm import State, StatesGroup
from aiovkteams.filters import StateFilter
class Form(StatesGroup):
WaitingName = State()
@dp.message(Command("form"))
async def cmd_form(ctx: HandlerContext, fsm: FSMContext):
await fsm.set_state(Form.WaitingName)
await ctx.reply("Введите имя:")
@dp.message(Form.WaitingName)
async def process_name(ctx: HandlerContext, fsm: FSMContext):
name = ctx.event.text
await fsm.clear()
await ctx.reply(f"Привет, {name}!")
Отправка изображения
with open("photo.jpg", "rb") as f:
result = await bot.upload_file(
chat_id=ctx.chat_id,
file=f.read(),
filename="photo.jpg",
caption="Подпись к фото",
)
# result["fileId"] — можно сохранить для повторной отправки без загрузки
Роутеры
# handlers/catalog.py
from aiovkteams.router import Router
router = Router(name="catalog")
@router.message(Command("catalog"))
async def cmd_catalog(ctx: HandlerContext, fsm: FSMContext):
...
# main.py
dp.include_router(catalog.router)
Changelog
0.3.3
- Исправлен
KeyError: 'userId'вUser.from_dictпри обработкеChatMemberEvent(некоторые системные события VK Teams не содержат полеuserId)
0.3.2
- Добавлено PostgreSQL-хранилище FSM (
aiovkteams.fsm.storage.postgres) - Поддержка
upload_voiceдля голосовых сообщений
0.3.1
- Добавлены стили кнопок:
primary,attention,base - Поддержка кнопок-ссылок (
url=)
0.3.0
- Первый публичный релиз
- Polling, FSM (MemoryStorage), Router, Middleware, Inline-клавиатуры
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
aiovkteams-0.3.3.tar.gz
(24.1 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 aiovkteams-0.3.3.tar.gz.
File metadata
- Download URL: aiovkteams-0.3.3.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
092ac5d071d697351f2e78b14b07cbbd78777c0682881d37a1a8506bf3499681
|
|
| MD5 |
3e1beb86106da8cb57f90948b4abf056
|
|
| BLAKE2b-256 |
8809a69c4786e91bcdbd81c5cf8c034fdd7e6e155439ab7120bd010bf2cf0d04
|
File details
Details for the file aiovkteams-0.3.3-py3-none-any.whl.
File metadata
- Download URL: aiovkteams-0.3.3-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c82159e52f03e1dd2cdc5a7e0fb8c585d803994068850ef8821d0ed92796f239
|
|
| MD5 |
ba980840b10b9f6458da8406cf17ea19
|
|
| BLAKE2b-256 |
f85b1041eba0a996ecce78e6f65919f3121e349e33fa2add79cecdb799c04c6b
|