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
- Host: GitHub
- URL: https://github.com/rogue-meow/vkflow
- Owner: rogue-meow
- License: mit
- Created: 2026-03-05T21:04:07.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-13T19:32:21.000Z (4 months ago)
- Last Synced: 2026-04-08T00:18:07.957Z (3 months ago)
- Topics: async, bot, framework, python, vk, vk-api, vkontakte
- Language: Python
- Homepage: https://rogue-meow.github.io/vkflow/
- Size: 2.39 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
VKFlow
Современный асинхронный фреймворк для создания ботов ВКонтакте
---
## Установка
```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)