Closed daeeros closed 3 years ago
Добрый день!
Мне кажется, этот вопрос сводится к тому, как можно с помощью обработчика vk.on_payloads
принимать полезную информацию, только часть которой предопределена. Т.е. строку u_1_2
наверняка можно задать как JSON объект {"kind": "u", "meta1": 1, "meta2": 2}
. И тогда достаточно научить обработчик передавать на обработку события, у которых (как минимум) поле kind
содержит именно u
. Это похоже на качественное решение этого вопроса.
Пример плагина, который демонстрирует описанный мной подход. Тут три кнопки, две из которых обрабатываются одним обработчиком, а третья - другим. При этом сама полезная нагрузка (за исключением поля "kind") может содержать любые данные.
import json
from kutana import Plugin
plugin = Plugin("kb")
@plugin.vk.on_payloads([{"kind": "1"}])
async def __(msg, ctx):
await ctx.reply(f"Handler for kind (1), your meta is '{ctx.payload['meta']}'")
@plugin.vk.on_payloads([{"kind": "2"}])
async def __(msg, ctx):
await ctx.reply(f"Handler for kind (2), your meta is '{ctx.payload['meta']}'")
@plugin.on_commands(["kb"])
async def __(msg, ctx):
await ctx.reply("hey", keyboard=json.dumps({
"one_time": True,
"buttons": [
[
{"action": {
"type":"text",
"label": "kind=1, meta=2", "payload": "{\"kind\": \"1\", \"meta\": \"2\"}"
}}
],
[
{"action": {
"type":"text",
"label": "kind=1, meta=4", "payload": "{\"kind\": \"1\", \"meta\": \"4\"}"
}}
],
[
{"action": {
"type":"text",
"label": "kind=2, meta=4", "payload": "{\"kind\": \"1\", \"meta\": \"4\"}"
}}
],
]
}))
На данный момент обновлённый обработчик в master-ветке. Можете проверить, и, если там всё в порядке, доработки обработчика будут выпущены в следующей версии.
Приветствую, такой вопрос возник, к примеру у нас есть куча кнопок по типу u_1_2, u_0_6, u_9_1 и тд, такой вопрос, как можно вызвать
vk.on_payload
что бы он откликался на все кнопки которые начинаются допустим в нашем примере на u_?