Homogenic! Customizable VK API framework implementing comfort and speed
Project description
VKBottle - high quality bot building library
VKBottle - это многофункциональный модуль для работы с VK Api и создания ботов. Проект все еще тестируется на различных нагрузках
Установка
-
С помощью установщика pip из PyPi:
Новейшая версия:
pip install vkbottle
Последний стабильный релиз:
pip install vkbottle==2.7.8
-
С помощью установщика pip из GitHub:
pip install https://github.com/timoniq/vkbottle/archive/master.zip --upgrade
Минимальная версия python для комфортной работы с библиотекой - 3.7
Для красивых логов установите loguru (
pip install loguru
)
Документация
Доступны следующие разделы:
- Первый бот на vkbottle - пособие для новичков, краткое введение
- Работа с API, генераторами токенов. Генераторы клавиатур, загрузчики вложений, перевод в VKScript
- Введение в составляющие фреймворка - Боты, юзерботы, хендлеры и блупринты
- Бранчи - имплементация FSM
- Внешние составляющие: Middleware, хендлинг ошибок и капчи, TaskManager
Кастомизация
После установки vkbottle
рекомендуется сразу же установить дополнительные модули loguru
и uvloop
, без них фреймворк работает медленне и логи не настраиваемы. О возможностях этих модулей можно прочитать в их документации
Установите uvloop
и loguru
с помощью команд:
pip install loguru
pip install uvloop
Кроме того вы можете установить любую библиотеку для ускорения json из предложенных: ujson
, hyperjson
, orjson
Фишки
- Удобная и быстрая доставка сообщений через regex
- Быстрый API враппер
- Быстрый LongPoll фреймворк для ботов
- Маленький объем кода со стороны пользователя
- Полностью асинхронно
- Ветки стейтов - Branches
- Блокирующая обработка - Middlewares
- Правила - Rules
- User LongPoll API
Наши официальные чаты
Задавайте вопросы в наших чатах и получайте на них быстрые ответы от активного комьюнити!
Longpoll
Самый быстрый способ запустить бота. На сервер VK посылаются "долгие" запросы, на которые приходит ответ только при появлении события. При работе с longpoll проверьте что вы включили все нужные события в настройках группы и выставили последнюю версию API.
from vkbottle import Bot, Message
bot = Bot("my-token")
@bot.on.message(text="My name is <name>", lower=True)
async def wrapper(ans: Message, name):
await ans("Hello, {}".format(name))
bot.run_polling(skip_updates=False)
Callback
События приходят на ваш сервер как запросы, на которые вы должны вернуть ответ "ok". При работе с callback проверьте что вы включили все нужные события в настройках группы и поставили последнюю версию API.
from vkbottle import Bot, Message
from aiohttp import web
bot = Bot(token="my-token")
app = web.Application()
async def executor(request: web.Request):
event = await request.json()
emulation = await bot.emulate(event, confirmation_token="ConfirmationToken")
return web.Response(text=emulation)
@bot.on.message(text="test", lower=True)
async def wrapper(ans: Message):
return "Got it."
app.router.add_route("/", "POST", executor)
web.run_app(app=app)
Rules
Правила позволяют удобно настраивать ваши хендлеры, принимающие события.
from vkbottle import Bot, Message
from vkbottle.rule import AttachmentRule
bot = Bot("my-token")
@bot.on.message(AttachmentRule("photo"))
async def wrapper():
return "What a beautiful photo!"
bot.run_polling()
User-longpoll
Интерфейс user-longpoll одинаковый с интерфейсом бота, поэтому код писать проще.
from vkbottle.user import User, Message
user = User("user-token")
@user.on.message_handler(text="do you like <item>?")
async def wrapper(ans: Message, item: str):
if item in ["memes", "chicken nuggets", "vkbottle"]:
return f"Yes! I adore {item}!"
return "No..."
user.run_polling()
Больше примеров в папке /examples
Based on
aiohttp - longpoll и запросы к API
pydantic - все датаклассы
vbml - встроенная поддержка лучшего парсера сообщений
Не забывайте что в vbml существует огромное количество отличных паттернов для использования, валидаторы и многое другое, изучите документацию.
Для оптимальной работы фреймворка, рекомендуется использовать только асинхронные библиотеки
Contributing
ПР поддерживаются! Нам приятно видеть ваш вклад в развитие библиотеки
Задавайте вопросы в блоке Issues и в чате Telegram/VK!
Лицензия
Copyright © 2019-2020 timoniq.
Этот проект имеет MIT лицензию.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for vkbottle-2.7.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f10f89edc4861f410a3c0e1e21de1301e7ea86d65628edf1abad82788d77f0cc |
|
MD5 | 4990c89873d7522b181772b83f9ac185 |
|
BLAKE2b-256 | dd39af616807b51b613adbff6d6454dba1e734a61dd5b156ef83a64000c37c43 |