An open API service indexing awesome lists of open source software.

https://github.com/rogue-meow/vkflow

Lightweight modern asynchronous framework for VK bots
https://github.com/rogue-meow/vkflow

async bot framework python vk vk-api vkontakte

Last synced: 1 day ago
JSON representation

Lightweight modern asynchronous framework for VK bots

Awesome Lists containing this project

README

          





VKFlow

VKFlow


Современный асинхронный фреймворк для создания ботов ВКонтакте


PyPI
Python
License
Docs
VK

---

## Установка

```shell
pip install vkflow
```

С дополнениями для производительности:

```shell
pip install vkflow[speed]
```

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

```python
import vkflow as vf

app = vf.App()

@app.command("ping")
async def ping():
return "Pong!"

@app.command("дата")
async def reg_date(user: vf.User):
date = await vf.get_user_registration_date(user.id)
return f"{user:@[first_name]} зарегистрирован {date:%d.%m.%Y}"

app.run("YOUR_TOKEN")
```

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

**Type hints как аргументы** - параметры команд парсятся из аннотаций типов

**Интерактивный UI** - клавиатуры, карусели, View с callback-кнопками

**FSM** - конечные автоматы для многошаговых диалогов

**Cog-система** - группировка команд в модули

**Проверки и cooldown** - декораторы для контроля доступа

**Webhook и LongPoll** - оба режима из коробки

**Система аддонов** - расширение функциональности через плагины

Интерактивные View

```python
class ConfirmView(vf.ui.View):
def __init__(self):
super().__init__(timeout = 60, inline = True)
self.result = None

@vf.ui.button(label = "Да", color = "positive")
async def yes(self, interaction: vf.Callback):
self.result = True
await interaction.answer("Принято!")
self.stop()

@vf.ui.button(label = "Нет", color = "negative")
async def no(self, interaction: vf.Callback):
self.result = False
await interaction.answer("Отменено")
self.stop()
```

Cog-модули

```python
class Admin(vf.Cog):
@vf.command("бан")
@vf.check(...)
async def ban(self, ctx: vf.Context, user: vf.User):
...
await ctx.reply(f"{user:@[first_name]} забанен")
```

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

- Python 3.11+
- VK API 5.199

## Credits

Based on [vkquick](https://github.com/deknowny/vkquick).

## Лицензия

[MIT](LICENSE)