Модуль:Skills Lookup: различия между версиями

Материал из SiberiaWiki
Нет описания правки
(добавление дебага в модуль)
Строка 1: Строка 1:
local p = {}
local p = {}
local skillsJson = mw.title.new("User:IanComradeBot/skills.json", "User"):getContent()
local skillsJson = mw.title.new("User:IanComradeBot/skills.json", "User"):getContent()
local rolesToSkillsJson = mw.title.new("User:IanComradeBot/roles to skills.json", "User"):getContent()
local rolesToSkillsJson = mw.title.new("User:IanComradeBot/roles to skills.json", "User"):getContent()
Строка 15: Строка 16:
-- Функция для получения списка навыков со значением true для указанной роли
-- Функция для получения списка навыков со значением true для указанной роли
function p.getSkillsList(roleName)
function p.getSkillsList(roleName)
    if not skillsJson then
        return "Ошибка: не удалось загрузить skills.json"
    end
    if not rolesToSkillsJson then
        return "Ошибка: не удалось загрузить roles to skills.json"
    end
     local rolesData, err = p.decodeJson(rolesToSkillsJson)
     local rolesData, err = p.decodeJson(rolesToSkillsJson)
     if not rolesData then
     if not rolesData then
         return "Ошибка: " .. err
         return "Ошибка: " .. err
    end
    -- Отладочный вывод для проверки загруженных данных
    local debugOutput = "Загруженные роли:\n"
    for _, r in ipairs(rolesData) do
        debugOutput = debugOutput .. r.name .. "\n"
     end
     end


Строка 29: Строка 43:


     if not role then
     if not role then
         return "Роль не найдена"
         return "Роль не найдена\n" .. debugOutput
     end
     end



Версия от 10:04, 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)
    if not skillsJson then
        return "Ошибка: не удалось загрузить skills.json"
    end
    if not rolesToSkillsJson then
        return "Ошибка: не удалось загрузить roles to skills.json"
    end

    local rolesData, err = p.decodeJson(rolesToSkillsJson)
    if not rolesData then
        return "Ошибка: " .. err
    end

    -- Отладочный вывод для проверки загруженных данных
    local debugOutput = "Загруженные роли:\n"
    for _, r in ipairs(rolesData) do
        debugOutput = debugOutput .. r.name .. "\n"
    end

    local role
    for _, r in ipairs(rolesData) do
        if r.name == roleName then
            role = r
            break
        end
    end

    if not role then
        return "Роль не найдена\n" .. debugOutput
    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