Giter Site home page Giter Site logo

vkbottle / vkbottle Goto Github PK

View Code? Open in Web Editor NEW
446.0 21.0 100.0 4.16 MB

Сustomizable asynchronous VK API framework

Home Page: https://vkbottle.readthedocs.io/ru/latest

License: MIT License

Python 100.00%
vk vk-api vkbottle user-longpoll async asyncio bot longpoll-api callback middleware

vkbottle's Issues

Изменение работы бранчей

Запрос на возможность связан с проблемой? Если да, опишите
На данный момент бранчи работают не так, как хотелось бы. Допустим мне нужно поместить в бранч только определенного юзера из беседы, чтобы для остальных пользователей хэндлеры не блокировались. Но есть проблема, в AsyncHandleManager._processor обрабатывается только peer_id.

Опишите решение, которое вы бы хотели видеть
В AbstractBranchGenerator можно добавить метод contains, который будет принимать 1 аргумент в качестве списка из целых чисел typing.List[int] и проходить циклом по очереди self.branch.queue. Если ключ из очереди есть в списке из аргумента, то возвращаем его return key

Опишите решения, которые вы временно предприняли для решения этого вопроса
Описано выше

[Дополнительно] Пример псевдокода

from typing import List, Optional
from typing_extensions import final


class AbstractBranchGenerator(ABC):
    ...
    @final
    def contains(self, keys: List[int]) -> Optional[int]:
        for key in self.branch.queue:
            if key in keys:
                return key


async def _processor(self, obj: dict, client_info: dict):
    ...

    key = self.branch.contains([message.peer_id, message.from_id])
    if key:
        await self._branched_processor(key, obj, client_info, middleware_args)


async def _branched_processor(
       self,
       key: int,
       obj: dict, 
       client_info: dict, 
       middleware_args: list
    ):

Обработка всех непрочитанных сообщений

Запрос на возможность связан с проблемой? Если да, опишите
Сейчас бот получает сообщения только с момента когда он запущен.
Если сделать перезапуск бота когда пользователи ему пишут, то сообщения останутся непрочитанными и неотвеченными.

Опишите решение, которое вы бы хотели видеть
При запуске бот получается все непрочитанные сообщения и обрабатывает их.
Возможно это какой-то параметр при запуске

Branches compat. events

Прекрасно бы было увидеть возможность совмещения бранчей со всеми событиями, таким образом можно будет создавать такие конструкции как:

  • Даю тебе задание написать комментарий "[комментарий]" под записью [запись]
  • Пишет комментарий [комментарий] под записью [запись]
  • Спасибо!

It's going to be great if branches are compatible with all types of events;

  • My task for you: write comment [comment] for post [post]
  • Manage task. Write comment [comment] for post [post]
  • Thank you!

data как атрибут класса, а не его экземпляра

В VBMLRule (и других правилах) self.data является атрибутом самого класса, а надо чтобы она была атрибутом его экземпляров, к примеру сейчас не работают команды в кол-ве > 1.
Следует заменить self.data['pattern'] = patterns на self.data = {'pattern': patterns} (и так для каждого правила соответственно), тогда для каждого экземпляра класса будет существовать своя data и баг будет пофиксен. С уважением, пользователь vkbottle!

Баг

Что должно было случится
Должно отправится сообщение c кнопкой ссылкой

Ваш код

keyboard = Keyboard(one_time=True)
keyboard.add_row()
keyboard.add_button(OpenLink('Пополнить', link='https://vk.com/'))
keyboard = keyboard.generate()
await ans('text', keyboard=keyboard)

Опишите баг
Не удается отправить клавиатуру с кнопкой типа OpenLink
Получаю ошибку

[911, 'Keyboard format is invalid: button [0][0] has action type which is not compatible with setting colors']

Не работают бранчи в блупринтах

Опишите баг
Бранчи не работают в блупринтах

Что должно было случится
Бранчи работают в блупринтах

Ваш код
imageimageimage
image

main.py / routes/test_branch.py / проверка / вывод консоли

Заполните поля:

  • OS: Windows 10 x64
  • Version of vkbottle: 2.7.4

Дополнительная информация
...

Возникновение ошибки в AttachmentRule

Опишите баг
При создании хэндлера с правилом AttachmentRule возникает ошибка AttributeError

Ваш код
https://pastebin.com/9sCmiTAt

Заполните поля:

  • OS: Windows
  • Version of vkbottle: Latest

Дополнительная информация
Использую vkbottle.framework.user.User, возможно у Bot такой проблемы не будет, так как attachments типизированы.

Баг

Опишите баг
Не отвечает на сообщение со стороны юзера

Что должно было случится
Сработает соответствующий хендлер

Ваш код
https://pastebin.com/WrgxNe0m

Заполните поля:

  • OS: Windows 10 Pro
  • Version of vkbottle: 2.7.5

Дополнительная информация
Ошибка в консоли:
https://pastebin.com/A0JxtSLv

Возникла проблема при использование vkbottle uploader

Делаю бота через vkbottle.bot в группе.
Суть заключается в том, что человек пишет в лс группы "привет" и прикрепляет картинку к сообщению, бот же должен сохранить ссылку на вложение и отослать на другой сайт, после оттуда сохранить к себе и отправить(загрузить) тому человеку, который прислал её в лс группы.

Код скрипта с python на pastebin: https://pastebin.com/TzHHYra2

также прикрепляю скрин ошибки в консоли

Screenshot_10

Прошу помочь! Как это исправить/решить?

KeyError: 'client_info'

изображение

Видимо, с веб версии ВКонтакте client_info не высылается и бот совсем отказывается работать.

TypeError: 'coroutine' object is not callable

Опишите баг
Вылетает исключение.
На предыдушей версии данной проблемы не наблюдалось
database для хранения состояния не использую

[VKBottle] While parent_processor was handling error occurred 
Traceback (most recent call last):
  File "/path/.venv/lib/python3.7/site-packages/vkbottle/framework/framework/swear_handler.py", line 26, in wrapper
    return await func(*args, **kwargs)
  File "/path/.venv/lib/python3.7/site-packages/vkbottle/framework/bot/processor.py", line 35, in parent_processor
    return await self.message_processor(obj, client_info)
  File "/path/.venv/lib/python3.7/site-packages/vkbottle/framework/bot/processor.py", line 81, in message_processor
    task = await rules[0].call(*args, **kwargs)
  File "/path/vkbot.py", line 305, in branch4_handler
    await bot.branch.add(ans.peer_id, "branch5", offer_id=offer.id)
  File "/path/.venv/lib/python3.7/site-packages/vkbottle/framework/framework/branch/database_branch.py", line 99, in add
    await self.get_branch(branch, context).enter()
  File "/path/.venv/lib/python3.7/site-packages/vkbottle/framework/framework/branch/database_branch.py", line 36, in get_branch
    branch = bare()
TypeError: 'coroutine' object is not callable
 [TIME 22:05:53]

Ваш код
await bot.branch.add(ans.peer_id, "branch5", offer_id=offer.id)

Заполните поля:
vkbottle-2.7.5
Установлен c GIT

Validator Error [User LP]

pydantic.error_wrappers.ValidationError: 1 validation error for Message
fwd_messages -> 0 -> attachments
value is not a valid dict (type=type_error.dict)

This happens to all other objects

Баг

Опишите баг
В cls_branch хендлеры срабатывают по цепочке

Что должно было случится
Хендлер должен сработать в соотвестивии с условием заданным в нём, и не обязательно соблюдая цепочку.

Ваш код
image

image

Заполните поля:

  • OS: Windows
  • Version of vkbottle: 2.7.2

Дополнительная информация
...

Middleware не работает как это было задумано

Запрос на возможность связан с проблемой? Если да, опишите
Невозможно сделать пост-обработку

Опишите решения, которые вы временно предприняли для решения этого вопроса
Встраиваю пост-обработку в хендлеры

[Дополнительно] Пример псевдокода

class MyMiddleware(Middleware):
    async def pre(message: Message):
        # pre handling
    async def post(message: Message):
        # post handling

Придется избавиться от старого интерфейса Middleware.middleware

Баг

Опишите баг
Теряется позиционный аргумент

Что должно было случится
На запрос должен сработать соответствующий хендлер без ошибок.

Ваш код
https://pastebin.com/hAcKgDhT

Заполните поля:

  • OS: Windows 10 Pro
  • Version of vkbottle: 2.7.6

Дополнительная информация
Код ошибки - https://pastebin.com/db1c1xdi

Баг ошибка при работе branch (веток)

Опишите баг
После того как поподаешь в branch, выдает ошибку

`[VKBottle] While parent_processor was handling error occurred 

Traceback (most recent call last):
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\swear_handler.py", line 26, in wrapper
    return await func(*args, **kwargs)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 35, in parent_processor
    return await self.message_processor(obj, client_info)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 81, in message_processor
    task = await rules[0].call(*args, **kwargs)
  File "calback.py", line 28, in wrapper
    await bot.branch.add(ans.peer_id, "my_branch", mark=mark)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\branch\database_branch.py", line 99, in add
    await self.get_branch(branch, context).enter()
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\branch\database_branch.py", line 36, in get_branch
    branch = bare()
TypeError: 'coroutine' object is not callable`

Что должно было случится
не должно быть ошибки, работа бота должна продолжаться

Ваш код
https://pastebin.com/ewDxEP2m

@bot.on.message(text="ставлю боту <mark:int>", lower=True)
async def wrapper(ans: Message, mark):
    await ans("Теперь расскажи, что ты думаешь о нем:")
    await bot.branch.add(ans.peer_id, "my_branch", mark=mark)
 
@bot.branch.simple_branch("my_branch")
async def branch(ans: Message, mark):
    if ans.text.lower() in ["это все", "да"]:
        await ans(f"Окей, твоя оценка «{mark}» и рассказ о боте заcчитан!")
        await bot.branch.exit(ans.peer_id)
 
    await ans(f"Ты считаешь, что {ans.text}. Мы тебя поняли. Это все?")

Заполните поля:

  • OS: Windows 10 x64
  • Version of vkbottle: 2.7.5

Дополнительная информация
...

Ошибка при работе росток (sprout)

Опишите баг
При попадание в росток, получаю ошибку

[======== Running on http://0.0.0.0:8080 ========
(Press CTRL+C to quit)VKBottle
] Using JSON_MODULE - json [TIME 16:06:48]
[VKBottle] Using asyncio loop - asyncio.windows_events [TIME 16:06:48]
[VKBottle] While parent_processor was handling error occurred 

Traceback (most recent call last):
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\swear_handler.py", line 26, in wrapper
    return await func(*args, **kwargs)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 35, in parent_processor
    return await self.message_processor(obj, client_info)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 81, in message_processor
    task = await rules[0].call(*args, **kwargs)
  File "calback.py", line 28, in wrapper
    await bot.branch.add(ans.peer_id, "my_branch")
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\branch\database_branch.py", line 99, in add
    await self.get_branch(branch, context).enter()
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\branch\database_branch.py", line 36, in get_branch
    branch = bare()
TypeError: 'coroutine' object is not callable

Что должно было случится
Я подозреваю что должен быть цикл бесконечный где при наступление события он выходит, но после того как попадаешь в росток выпадает ошибка и бот не реагирует

Ваш код

@bot.on.message(text="хочу в бранч", lower=True)
async def wrapper(ans: Message):
    await ans("Теперь ты в бранче!")
    await bot.branch.add(ans.peer_id, "my_branch")


@bot.branch.simple_branch("my_branch")
async def branch(ans: Message):
    if ans.text.lower() == "выйти":
        await ans("Окей, вывожу!")
        await bot.branch.exit(ans.peer_id)

    await ans("Ты в бранче. Пиши «выйти», чтобы выйти отсюда.")

Заполните поля:

  • OS: Windows 10
  • Version of vkbottle: 2.7.5

Дополнительная информация
...

Баг в работе с бранч

Опишите баг

  • заходим в branch1 await bot.branch.add(ans.peer_id, 'branch1')
  • пользователь отвечает на сообщения и вызывается код branch1
  • await bot.branch.exit(ans.peer_id)
  • await bot.branch.add(ans.peer_id, 'branch2')
  • пользователь пишет сообщение, но снова попадает в branch1

Что должно было случится
Пользователь должен попадать в branch2

Заполните поля:

  • Version of vkbottle-2.7.5
    pip install git+https://github.com/timoniq/vkbottle.git

Дополнительная информация
мой код успешно работает на vkbottle-2.7.3 но ломается на vkbottle-2.7.5

Exception

Опишите баг
AttributeError: can't set attribute

Что должно было случится
The code supposed to work fine.

Ваш код
Traceback (most recent call last):
bot = Bot(tokens=token, debug=True)
File "C:\Users\12568\PycharmProjects\ScheduleBot\venv\lib\site-packages\vkbottle\framework\bot\bot.py", line 106, in init
self.api.group_id = self.group_id
AttributeError: can't set attribute

Заполните поля:

  • OS: Windows
  • Version of vkbottle: Latest

Дополнительная информация
N/A

Make TokenManager

Make TokenManager for multiple token storage and then switch them in case of too many requests per second error

#TODO

Баг с клавиатурой

Опишите баг
При добавлений кнопки с типом open_link/location/vkpay/vkapps нельзя указывать цвет для кнопки, а библиотека делает это по умолчанию для всех кнопок. Как следствие 911 ошибка.

Что должно было случится
Должна была сгенерироваться и отправиться валидная клавиатура

Ваш код
image

Баг - Blueprints don't concatenate Middlewares on start up

Опишите баг
Blueprints don't concatenate Middlewares on start up

Что должно было случится
Опишите ожидаемое поведение фреймворка

Ваш код
AttributeError: 'NoneType' object has no attribute 'middleware_handler'

Заполните поля:

  • OS: Windows
  • Version of vkbottle: Latest

Дополнительная информация
...

More Bot templates

Idea

Make some bot templates to make bots easily created "in one string" like this:

Echo("token").ready().run(skip_updates=False)

From echo template example

Todo

Some template ideas to make in the nearest future:

  • Echo bot template
  • ChatManager bot template
  • TextBot bot template

Leave your enhancements for bot templates in this issue. Pull requests are welcome

Баг

Опишите баг
В cls_branch хендлеры срабатывают по цепочке

Что должно было случится
Хендлер должен сработать в соотвестивии с условием заданным в нём, и не обязательно соблюдая цепочку.

Ваш код
https://pastebin.com/2nCJMTQb
https://pastebin.com/puZC8xZd

Заполните поля:

  • OS: Windows 10
  • Version of vkbottle: 2.7.2

Дополнительная информация
Значит проблема в библиотеке, потому что клавиатура составлена по инструкции, а судя по документации этот код должен работать с клавиатурой.
Пересоздал issue, так как в прошлом вы даже не пытались разобраться с проблемой.

Баг - Chat action events don't process by AsyncHandleManager

Опишите баг
Chat action events don't process by AsyncHandleManager

Что должно было случится
N/A

Ваш код
N/A

Заполните поля:

  • OS: Windows
  • Version of vkbottle: Latest

Дополнительная информация
...

Баг

Опишите баг
AttributeError: module 'vkbottle.types.objects' has no attribute 'photos'

Что должно было случится
Ошибки быть не должно.

Ваш код
https://pastebin.com/nkGKATBs

Заполните поля:

  • OS: Ubuntu
  • Version of vkbottle: 2.7

Дополнительная информация
...

ImportError

Опишите баг
Traceback (most recent call last):
File "/data/data/com.termux/files/usr/lib/python3.8/multiprocessing/synchronize.py", line 28, in
from _multiprocessing import SemLock, sem_unlink
ImportError: cannot import name 'SemLock' from '_multiprocessing' (/data/data/com.termux/files/usr/lib/python3.8/lib-dynload/_multiprocessing.cpython-38.so)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "bot.py", line 3, in
bot = Bot("31fc73ccaafdabe479534eb645e1256ba6a59bcca734766ddbc1d86e57f0de3a741f6f63ad990593c9314")
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/vkbottle/framework/bot/bot.py", line 94, in init
logger.add(
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/loguru/_logger.py", line 935, in add
handler = Handler(
File "/data/data/com.termux/files/usr/lib/python3.8/site-packages/loguru/_handler.py", line 85, in init
self._queue = multiprocessing.SimpleQueue()
File "/data/data/com.termux/files/usr/lib/python3.8/multiprocessing/context.py", line 113, in SimpleQueue
return SimpleQueue(ctx=self.get_context())
File "/data/data/com.termux/files/usr/lib/python3.8/multiprocessing/queues.py", line 336, in init
self._rlock = ctx.Lock()
File "/data/data/com.termux/files/usr/lib/python3.8/multiprocessing/context.py", line 67, in Lock
from .synchronize import Lock
File "/data/data/com.termux/files/usr/lib/python3.8/multiprocessing/synchronize.py", line 30, in
raise ImportError("This platform lacks a functioning sem_open" +
ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.

Что должно было случится
Ответит мне в сообщениях , выходит ошибка

Ваш код
https://pastebin.com/FuXm9JUd

Заполните поля:

  • OS: Android (PyDroid 3)
  • Version of vkbottle: 2.7.4

Дополнительная информация
...

Методы не поддерживают параметры captcha_sid и captcha_key

Опишите баг
Для прохождения капчи нужно в параметрах указать captcha_sid и captcha_key
Т.к в коде методы не принимают **kwargs или captcha_sid или captcha_key, питон пишет что таких параметров нет.

Что должно было случится
Фреймворк должен в параметрах передать captcha_sid и captcha_key (https://vk.com/dev/captcha_error)

Ваш код

async def solve_captcha(e: VKError):
    # ... Solve captcha and get the answer
    await e.method_requested(**e.params_requested, captcha_key=resp['captchaSolve'], captcha_sid=captcha_sid)

Exception

Traceback (most recent call last):
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/framework/user/processor.py", line 75, in _processor
    return await self._message_processor(*data)
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/framework/user/processor.py", line 123, in _message_processor
    task = await rule.call(message, *args, **kwargs)
  File "/home/nm17/PycharmProjects/nicevk/nicevk/plugins/type_plugin.py", line 24, in help_
    await ans.api.messages.edit(ans.peer_id, ans.id, mes)
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/types/methods/messages.py", line 235, in __call__
    return await self.request(
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/api/api/request.py", line 82, in __call__
    response = await request(
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/api/api/request.py", line 63, in request
    raise exception
vkbottle.utils.exceptions.VKError: (14, 'Captcha needed', <Method MessagesEdit>, {'peer_id': 580903823, 'message_id': 1108976, 'message': 'ggf'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/framework/user/user.py", line 228, in emulate
    await self._processor(update, update_code, update_fields)
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/framework/user/processor.py", line 78, in _processor
    await self.error_handler.handle_error(e)
  File "/home/nm17/.cache/pypoetry/virtualenvs/nicevk-guMaWNlW-py3.8/lib/python3.8/site-packages/vkbottle/framework/framework/error_handler/error_handler.py", line 15, in handle_error
    return await self.handled_errors[e.error_code](e)
  File "/home/nm17/PycharmProjects/nicevk/nicevk/api.py", line 39, in solve_captcha
    await e.method_requested(**e.params_requested, captcha_key=resp['captchaSolve'], captcha_sid=captcha_sid)
TypeError: __call__() got an unexpected keyword argument 'captcha_key'

Заполните поля:

  • OS: Ubuntu 20.04 (Python v3.8.2)
  • Version of vkbottle: v2.7.3

Дополнительная информация
...

Новая возможность: трансляция в вкскрипт для метода execute

Опишите решение, которое вы бы хотели видеть
Хендлер, транслирующий код в vkscript для последующего вызова

Опишите решения, которые вы временно предприняли для решения этого вопроса
Просто сохраняя код в отдельных файлах .vkscript или в строках

[Дополнительно] Пример псевдокода

@vkscript
def code(api: API):
    names = []
    for user in api.users.get(user_ids=[1, 2, 3]):
        names.append(user.first_name)
    return names

Далее просто:

await api.execute(code)

Новая возможность - User Longpoll API similar to bot's

Запрос на возможность связан с проблемой? Если да, опишите
Добавление схожего с ботами API для User класса. Иногда очень хочется быстро перенести систему хендлеров из бота в юзера и обратно, но к сожалению с текущим состоянием юзер лп это невозможно

Опишите решение, которое вы бы хотели видеть

  • Схожее API для хендлеров (message, chat_message, message_handler для добавления правил на сообщения с поддержкой всех col rules, event для хендлинга событий соответственно)
  • Все основные воркеры из ботов: branch через те же генераторы, middleware, extension
  • Нормальные error_handlerы
  • Перенос хендлеров бота в юзера и обратно без проблем и страшного кода

Опишите решения, которые вы временно предприняли для решения этого вопроса
Уродливые самодельные объявляющие хендлеры декораторы и прочие костыли

[Дополнительно] Пример псевдокода

user = User("user-token")

@user.on.message(text=["привет", "прив"])
async def wrapper(ans: Message):
    await user.branch.add(ans.peer_id, "some_branch")
    await ans("Привет, расскажи как жизнь")

Баг

Опишите баг
Please check your internet connection

Что должно было случится
Пишу боту, но выходит такая ошибка

Ваш код
https://pastebin.com/B11cWBxh

Заполните поля:

  • OS: Pythonanywhere
  • Version of vkbottle: 2.7.5

Дополнительная информация
https://vk.com/photo589229003_457240189

Менеджер для handler return

[Дополнительно] Пример псевдокода

class MyManager(HandlerReturnManager):
    @value_instance(str)
    async def handle(value: str):
        await bot.api.messages.send(peer_id=self.event.peer_id, message=value)

Exception

Опишите баг
pydantic.error_wrappers.ValidationError: 1 validation error for GetByIdModel

Что должно было случится
Ошибки быть не должно

Ваш код
https://pastebin.com/jUvzJipT

Заполните поля:

  • OS: Ubuntu 16.04
  • Version of vkbottle: Latest

Дополнительная информация
N/A

Баг с клавиатурой (Location)

Опишите баг
При использование Location в клавиатуре выдает ошибку 911 (возможно из за того что передается label по дефолту)

[VKBottle] Using JSON_MODULE - json======== Running on http://0.0.0.0:8080 ========
(Press CTRL+C to quit)
[TIME 01:06:03]
[VKBottle] Using asyncio loop - asyncio.windows_events [TIME 01:06:03]
[VKBottle] While parent_processor was handling error occurred 

Traceback (most recent call last):
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\framework\swear_handler.py", line 26, in wrapper
    return await func(*args, **kwargs)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 35, in parent_processor
    return await self.message_processor(obj, client_info)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\framework\bot\processor.py", line 81, in message_processor
    task = await rules[0].call(*args, **kwargs)
  File "calback.py", line 28, in wrapper
    await ans('Хай, студент, рад тебя видеть сегодня!', keyboard = keyboard_gen(
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\types\message.py", line 92, in __call__
    _mid = await self.api.messages.send(
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\types\methods\messages.py", line 1107, in __call__
    return await self.request(
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\api\api\request.py", line 26, in __call__
    response = await request(
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\api\api\util\requester.py", line 68, in request
    return await error_handler.handle_error(exception)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\api\api\error_handler\error_handler.py", line 28, in handle_error
    return await self.unhandled_error(e)
  File "D:\vk-bot-qwest\env\lib\site-packages\vkbottle\api\api\error_handler\error_handler.py", line 58, in unhandled_error
    raise e
vkbottle.utils.exceptions.VKError: (911, 'Keyboard format is invalid: button [1][0] action contains unknown fields', <Method MessagesSend>, {'random_id': 1201898978, 'peer_id': 30893183, 'message': 'Хай, студент, рад тебя видеть сегодня!', 'keyboard': '{"one_time": false, "buttons": [[{"action": {"type": "text", "label": "\\u041a\\u043d\\u043e\\u043f\\u043a\\u0430 #1"}, "color": "positive"}, {"action": {"type": "text", "label": "\\u041a\\u043d\\u043e\\u043f\\u043a\\u0430 #2"}, "color": "default"}], [{"action": {"type": "location", "label": "\\u0414\\u0435\\u0430\\u043d\\u043e\\u043d \\u0431\\u0435\\u0441\\u043f\\u043b\\u0430\\u0442\\u043d\\u043e"}}]], "inline": false}'}) 

Что должно было случится
Клавиатура должна отправляться корректно

Ваш код

@bot.on.message(text="привет", lower=True)
async def wrapper(ans: Message):
     await ans('Хай, студент, рад тебя видеть сегодня!', keyboard = keyboard_gen(
    [
        [{"text": "Кнопка #1", "color": "positive"}, {"text": "Кнопка #2"}], # Это первый ряд кнопок
        [{"type": "location", "text": "Деанон бесплатно"}], # Это второй ряд
    ]
))

Заполните поля:

  • OS: Windows 10 x64
  • Version of vkbottle: 2.7.5

Дополнительная информация*
Если отправлять клавиатуру без поля text, то присвоится пустой label

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.