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.
Этот проект имеет GPL-3.0 лицензию.
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 Distribution
File details
Details for the file vkbottle-2.7.5.tar.gz
.
File metadata
- Download URL: vkbottle-2.7.5.tar.gz
- Upload date:
- Size: 137.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03fbe42cd28b3f8ced3cbbe3dde5242897491e1936628d6e1051404cd6b3cf74 |
|
MD5 | 317bc2f979c386d02432e56829643840 |
|
BLAKE2b-256 | f3708c668d2a1c1368bb971f0d4c89887acff4435374e305fb540b4628779078 |