Skip to main content

Homogenic!

Project description

VKBottle - high quality bot building library

downloads service-test status

VKBottle - это многофункциональный модуль для работы с VK Api и создания ботов. Проект все еще тестируется на различных нагрузках


Установка

  1. С помощью установщика pip из PyPi:

    Новейшая версия:

    pip install vkbottle
    

    Последний стабильный релиз:

    pip install vkbottle==2.7.8
    
  2. С помощью установщика pip из GitHub:

    pip install https://github.com/timoniq/vkbottle/archive/master.zip --upgrade
    

Минимальная версия python для комфортной работы с библиотекой - 3.7

Для красивых логов установите loguru (pip install loguru)

Документация

Доступны следующие разделы:

Кастомизация

После установки vkbottle рекомендуется сразу же установить дополнительные модули loguru и uvloop, без них фреймворк работает медленне и логи не настраиваемы. О возможностях этих модулей можно прочитать в их документации

downloads downloads

Установите 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", "chicket 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

vkbottle-2.7.8-py3-none-any.whl (220.7 kB view details)

Uploaded Python 3

File details

Details for the file vkbottle-2.7.8-py3-none-any.whl.

File metadata

  • Download URL: vkbottle-2.7.8-py3-none-any.whl
  • Upload date:
  • Size: 220.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for vkbottle-2.7.8-py3-none-any.whl
Algorithm Hash digest
SHA256 83933e088e7de19bedf87e191c6f623dfab3565b92673d9760ddbdc2e30e2ce7
MD5 0660282709148f261ea660eed135e25c
BLAKE2b-256 ad200188e414c69dba0e127c2a4ae86a3e2eb2e18b38f33c79dea1c22d15e53f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page