Модуль:Prototypes/Механика/Доступ: различия между версиями

Нет описания правки
мНет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
-- Загрузка данных
local accessData = mw.loadData("Модуль:IanComradeBot/prototypes/AccessReader/access.json/data")
local p = {}
local p = {}


Строка 37: Строка 40:
     ["SyndicateAgent"] = "Агент Синдиката",
     ["SyndicateAgent"] = "Агент Синдиката",
     ["CentralCommand"] = "Центральное командование",
     ["CentralCommand"] = "Центральное командование",
     ["Wizard"] = "Волшебник"
     ["Wizard"] = "Волшебник",
    ["AllAccess"] = "Полный доступ"
}
}


-- Основная функция модуля
-- Основная функция модуля
function p.main(frame)
function p.main(frame)
     local id = frame.args[1]
     local param1 = frame.args[1]
   
    -- Режим перевода
    if param1 == "translate" then
        local key = frame.args[2]
        if not key then
            return "Ошибка: отсутствует ключ для перевода"
        end
        return translations[key] or key
    end
 
    local id = param1
     if not id then
     if not id then
         return "Нет данных для обработки"
         return "Нет данных для обработки"
     end
     end
      
      
    -- Загрузка данных
    local accessData = mw.loadData("Модуль:IanComradeBot/prototypes/AccessReader/access.json/data")
     if not accessData then
     if not accessData then
         return "Ошибка: не удалось загрузить данные доступа"
         return "Ошибка: не удалось загрузить данные доступа"
     end
     end
      
      
     local success, jsonData = pcall(mw.text.jsonDecode, accessData)
     local success, jsonData = pcall(function() return accessData end)
     if not success or type(jsonData) ~= "table" then
     if not success or type(jsonData) ~= "table" then
         return "Ошибка: некорректный формат данных доступа"
         return "Ошибка: некорректный формат данных доступа"
     end
     end
   
 
     for _, item in ipairs(jsonData) do
     for _, item in ipairs(jsonData) do
         if item.id == id and item.AccessReader and item.AccessReader.access then
         if item.id == id and item.AccessReader then
             local result = {}
             local result = {}
             for _, accessList in ipairs(item.AccessReader.access) do
             -- Если присутствует accessGroups, обрабатываем их
                for _, access in ipairs(accessList) do
            if item.AccessReader.accessGroups then
                    table.insert(result, translations[access] or access)
                for _, group in ipairs(item.AccessReader.accessGroups) do
                    for _, access in ipairs(group) do
                        table.insert(result, translations[access] or access)
                    end
                end
            -- Если accessGroups отсутствует, используем access
            elseif item.AccessReader.access then
                for _, accessList in ipairs(item.AccessReader.access) do
                    for _, access in ipairs(accessList) do
                        table.insert(result, translations[access] or access)
                    end
                 end
                 end
             end
             end
             return table.concat(result, ", ")
             if #result > 0 then
                return table.concat(result, ", ")
            end
         end
         end
     end
     end