Homogenic!
Project description
VKBottle - high quality VK Tool
VKBottle - это многофункциональный модуль для работы с VK Api и создания ботов. Проект все еще тестируется на различных нагрузках
Установка
-
С помощью установщика pip из PyPi:
Новейшая версия:
pip install vkbottle
Последний стабильный релиз:
pip install vkbottle==2.7.4
-
С помощью установщика pip из GitHub:
pip install https://github.com/timoniq/vkbottle/archive/master.zip --upgrade
Документация
Доступны следующие разделы:
- Первый бот на vkbottle - пособие для новичков, краткое введение
- Работа с API, генераторами токенов. Генераторы клавиатур, загрузчики вложений, перевод в VKScript
- Введение в составляющие фреймворка - Боты, юзерботы, хендлеры и блупринты
- Бранчи - имплементация FSM
- Внешние составляющие: Middleware, хендлинг ошибок и капчи, TaskManager
Кастомизация
После установки vkbottle
рекомендуется сразу же установить дополнительные модули uvloop
и loguru
, без них фреймворк работает медленне и логи не настраиваемы. О возможностях этих модулей можно прочитать в их документации
Установите 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 лицензию.
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.