Библиотека для 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.4
Message.file_ids— новое свойство, возвращает список всехfileIdиз вложений сообщенияPostgresStorage: исправленValueErrorпри чтении JSONB-данных —asyncpgвозвращал строку вместо dict, теперь оба формата обрабатываются корректно
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.5.tar.gz
(24.7 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.5.tar.gz.
File metadata
- Download URL: aiovkteams-0.3.5.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13e2878fb2b2e3ed8eb4e8856e7e5308cdfe54243a53f6c8bf44fc359c6d5590
|
|
| MD5 |
12c682f1e3dc030a8e42e1ed9ae5eeea
|
|
| BLAKE2b-256 |
757f83f553e84e05f79b0b401527deef00e99a5f9af9f516b2d2f8bd5524aeba
|
File details
Details for the file aiovkteams-0.3.5-py3-none-any.whl.
File metadata
- Download URL: aiovkteams-0.3.5-py3-none-any.whl
- Upload date:
- Size: 28.4 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 |
98f69f0ce7c3be059073d17b6e17c91b1576ad60a0e5c98e10a7dce0b4fb9e98
|
|
| MD5 |
efc103493d36255b0f9e97c7f984d3fa
|
|
| BLAKE2b-256 |
0c2cb58bd747a8730def3aefb78496ec3c29fdd833ba4e2cf241675a892797e2
|