- Регистрация
- 13 Июн 2022
- Сообщения
- 100
- Автор темы
- #1
Основной код:
Пример:
Важно. На данный момент класс адаптирован для работы с MoonLoader.
Чтобы сделать его опциональным к этому, импортируйте библиотеку для работы с JSON, и переменной
Важно. Параметры кнопок нужно передавать именно те, что требует VK_API ( кликабельно! )
Указывать аргументы в массиве можно как указывая название элемента( пример: { payload = "button_1", label = "gg" }, так и не указывая( пример: {"button_1", "gg"} )
Lua:
local keyboard = { } do
local keyboard.encode_json = encodeJson --> МЕТОД ENCODEJSON, ЕСЛИ НЕ ИСПОЛЬЗУЙТЕ MOONLOADER - cjson.encode
keyboard.create = function(self)
self.key = self
self.value = {}
self.row_select = 1
self.buttonColors = {
POSITIVE = "positive",
PRIMARY = "primary",
SECONDARY = "secondary",
NEGATIVE = "negative"
}
self.action = {
TEXT = "text",
OPENLINK = "open_link",
LOCATION = "location",
VKPAY = "vkpay",
CALLBACK = "callback",
OPEN_APP = "open_app"
}
return self
end
keyboard.get_type = function(params, button_type)
local button_types = {
["text"] = {
["action"] = {
["type"] = "text",
["label"] = params["label"] or params[1] or "",
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[2] or ""})
},
["color"] = params["color"]
},
["open_link"] = {
["action"] = {
["type"] = "open_link",
["link"] = params["link"] or params[1] or "",
["label"] = params["label"] or params[2] or "",
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[3] or ""})
}
},
["location"] = {
["action"] = {
["type"] = "location",
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[1] or ""})
}
},
["vkpay"] = {
["action"] = {
["type"] = "vkpay",
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[1] or ""}),
["hash"] = params["hash"] or params[2] or ""
}
},
["open_app"] = {
["action"] = {
["type"] = "open_app",
["app_id"] = params["app_id"] or params[1] or 0,
["owner_id"] = params["owner_id"] or params[2] or 0,
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[3] or ""}),
["label"] = params["label"] or params[4] or "",
["hash"] = params["hash"] or params[5] or ""
}
},
["callback"] = {
["action"] = {
["type"] = "callback",
["label"] = params["label"] or params[1] or "",
["payload"] = keyboard.encode_json({["button"] = params["payload"] or params[2] or ""}),
},
["color"] = params["color"]
}
}
if not button_types[button_type] then
return "Button Type is xuinya"
end
return button_types[button_type]
end
keyboard.add_button = function(self, button_type, params, button_color)
if not self.value[self.row_select] then self.value[self.row_select] = {} end
params["color"] = button_color
self.value[self.row_select][#self.value[self.row_select] + 1] = keyboard.get_type(params, button_type)
end
keyboard.row = function(self)
self.row_select = self.row_select + 1
end
keyboard.get_json = function(self, one_time, inline)
local init = {}
for row, buttons in ipairs(self.value) do
init[row - 1] = {}
for button_id, params in ipairs(buttons) do
init[row - 1][button_id - 1] = params
end
end
return {
["inline"] = inline or false,
["one_time"] = one_time or false,
["buttons"] = init
}
end
setmetatable(keyboard, {
__call = function(self)
return self:create(self)
end
})
end
Пример:
Lua:
function get_keyboard()
local markup = keyboard()
markup:add_button(markup.action.OPENLINK, {
"https://vk.com/tfornik",
"Перейти по ссылке",
"openLink"
}, markup.buttonColors.POSITIVE)
markup:row()
markup:add_button(markup.action.LOCATION, {
payload = "location"
}, markup.buttonColors.POSITIVE)
return markup:get_json(false, false)
end
Важно. На данный момент класс адаптирован для работы с MoonLoader.
Чтобы сделать его опциональным к этому, импортируйте библиотеку для работы с JSON, и переменной
keyboard.encode_json
присвойте значение функции encode. Пример: Если вы используйте библиотеку cjson -> [/B]cjson.encode
self:add_button(button_type:string, params:table, color:string) |
|
self:row() |
|
self:get_json(one_time:boolean, inline:boolean) |
|
Важно. Параметры кнопок нужно передавать именно те, что требует VK_API ( кликабельно! )
Указывать аргументы в массиве можно как указывая название элемента( пример: { payload = "button_1", label = "gg" }, так и не указывая( пример: {"button_1", "gg"} )
Последнее редактирование: