Перейти к содержанию

VKBottle - high quality VK Tool

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


Установка

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

Новейшая версия: sh pip install vkbottle

Последний стабильный релиз: sh pip install vkbottle==2.7.12

2) С помощью установщика pip из GitHub:

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

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

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

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

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

downloads downloads

Установите uvloop и loguru с помощью команд:

pip install loguru
pip install uvloop

Кроме того вы можете установить любую библиотеку для ускорения json из предложенных: ujson, hyperjson, orjson

Фишки

  • Удобная и быстрая доставка сообщений через regex
  • Быстрый API враппер
  • Быстрый LongPoll фреймворк для ботов
  • Маленький объем кода со стороны пользователя
  • Полностью асинхронно
  • Ветки стейтов - Branches
  • Блокирующая обработка - Middlewares
  • Правила - Rules
  • User LongPoll API

Longpoll

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

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

from vkbottle.user import User, Message

user = User("user-token")

@user.on.message_handler(text="can i ask you about <theme>?")
async def wrapper(ans: Message, theme: str):
    if theme in ["examples", "how to do smt", "depression", "insomnia"]:
        await ans("You can ask me about it in telegram @timoniq or make an issue on github!")
    else:
        await ans("Ok, sooner or later i ll respond you")

user.run_polling()

Больше примеров в папке /examples

Based on

aiohttp - longpoll и запросы к API pydantic - все датаклассы vbml - встроенная поддержка лучшего парсера сообщений

Для оптимальной работы фреймворка, рекомендуется использовать только асинхронные библиотеки

Contributing

ПР поддерживаются! Мне приятно видеть ваш вклад в развитие библиотеки Задавайте вопросы в блоке Issues и в чате VK!

Лицензия

Copyright © 2019-2020 timoniq. Этот проект имеет MIT лицензию.