Модуль:Skills Lookup: различия между версиями
Материал из SiberiaWiki
M 9SCO (обсуждение | вклад) Нет описания правки |
M 9SCO (обсуждение | вклад) Нет описания правки |
||
Строка 4: | Строка 4: | ||
-- Функция для декодирования JSON-строки в таблицу Lua | -- Функция для декодирования JSON-строки в таблицу Lua | ||
function p.decodeJson(jsonString) | |||
local success, result = pcall(function() return mw.text.jsonDecode(jsonString) end) | local success, result = pcall(function() return mw.text.jsonDecode(jsonString) end) | ||
if success then | if success then | ||
Строка 15: | Строка 15: | ||
-- Функция для получения списка навыков со значением true для указанной роли | -- Функция для получения списка навыков со значением true для указанной роли | ||
function p.getSkillsList(roleName) | function p.getSkillsList(roleName) | ||
local rolesData, err = decodeJson(rolesToSkillsJson) | local rolesData, err = p.decodeJson(rolesToSkillsJson) | ||
if not rolesData then | if not rolesData then | ||
return "Ошибка: " .. err | return "Ошибка: " .. err |
Версия от 09:58, 24 июня 2024
Для документации этого модуля может быть создана страница Модуль:Skills Lookup/doc
local p = {}
local skillsJson = mw.title.new("User:IanComradeBot/skills.json", "User"):getContent()
local rolesToSkillsJson = mw.title.new("User:IanComradeBot/roles to skills.json", "User"):getContent()
-- Функция для декодирования JSON-строки в таблицу Lua
function p.decodeJson(jsonString)
local success, result = pcall(function() return mw.text.jsonDecode(jsonString) end)
if success then
return result
else
return nil, "Ошибка декодирования JSON: " .. result
end
end
-- Функция для получения списка навыков со значением true для указанной роли
function p.getSkillsList(roleName)
local rolesData, err = p.decodeJson(rolesToSkillsJson)
if not rolesData then
return "Ошибка: " .. err
end
local role
for _, r in ipairs(rolesData) do
if r.name == roleName then
role = r
break
end
end
if not role then
return "Роль не найдена"
end
local skillsList = {}
for skillName, value in pairs(role.skills) do
if value then
table.insert(skillsList, skillName)
end
end
return table.concat(skillsList, ", ")
end
return p