Инструменты#

Модуль tools содержит вспомогательные инструменты для генерации таких объектов, как клавиатура.

Клавиатура (Keyboard)#

С pyvdk можно легко создать клавиатуру.
Сперва импортируем класс Keyboard и нужные виды кнопок, создаем объект клавиатуры.

from pyvdk.tools import Keyboard, TextButton


kb = Keyboard(one_time=True)

Теперь создадим и добавим кнопки. Полный список кнопок можно найти здесь.

b1 = TextButton(
    color=kb.BLUE,
    label="text1",
    payload="button1"
)
b2 = TextButton(
    color=kb.B,
    label="text2",
    payload="button2"
)

kb.append(b2)
kb.appendleft(b1)

Данные о клавиатуре хранятся в виде collections.deque, так что нам доступны appendleft и extendleft.

Danger

Всвязи с принципом работы deque, если привысить лимит кнопок в строке, то лишние будут автоматически удалены без предупреждения. Подробнее здесь.

В клавиатуре и кнопоках присутствуют константы цветов. Информацию о них можно найти здесь.
Если указать параметр payload строкой, то он будет автоматически обернут в dict по формату {"command": payload}.

Hint

Цвет кнопки можно так же указать строкой. Его можно указать сокращенно или полностью.
color="w"
color="white"

Кнопки можно добавлять в определенную строку через keyboard[row: int]. Строки нумеруются сверху вниз, от 0 до текущего лимита. Пустые строки автоматически удаляются из клавиатуры.

row = (
    TextButton(
        color=kb.PRIMARY,
        label="text3",
        payload={"button": "1"}
    ),
    TextButton(
        color=kb.RED,
        label="text4",
        payload={"button": "2"}
    )
)

kb[1].extend(row)

Note

Для добавления кнопок так же можно просто указать параметр row у данных методов.
kb.append(button, row=3)

Теперь мы можем отправить объект клавиатуры.

msg(..., keyboard=kb)

Если же вам понадобится клавиатура в формате json, то просто вызовите объект.

json_keyboard = kb()

Упоминание (Mention)#

Mention можно использовать для поиска упоминаний в тексте сообщения. Классметод find находит первое упоминание в тексте.

Mention example 1

from pyvdk.tools import Mention

...
mention = Mention.find(msg.text)
print(mention.id, mention.text)  # 1 @durov

Так же с помощью Mention можно создавать упоминания.

from pyvdk.tools import Mention

...
msg(f"{Mention(204697425, "@макс")}, сервера сегодня не будет")

Mention example 2