模块

模块:ArtsData/source

来自蒙纳多研究本部

头号云​(留言 | 贡献)2026年10月8日 (四) 18:40的版本 (创建页面,内容为“-- Module:ArtsData/source —— 唯一 XBDB 访问层(决策11) -- ⚠ 探测结论(2026-10-08,README §3.3):pc_arts 可达;pc_arts_ms 与 grow_arts_* 均返回 -- HTTP 500 未注册。故 desc/AP 走静态表,fetchDesc/fetchApTable 预留 nil 待站长开放后接入。 -- row_id 越界/多 ID 会整页 500 且 pcall 无效,白名单校验必须前置。 local p = {} local post = require("Module:RequestHelper").post local lv1 = require(…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在模块:ArtsData/source/doc创建

-- Module:ArtsData/source —— 唯一 XBDB 访问层(决策11)
-- ⚠ 探测结论(2026-10-08,README §3.3):pc_arts 可达;pc_arts_ms 与 grow_arts_* 均返回
--   HTTP 500 未注册。故 desc/AP 走静态表,fetchDesc/fetchApTable 预留 nil 待站长开放后接入。
-- row_id 越界/多 ID 会整页 500 且 pcall 无效,白名单校验必须前置。

local p = {}

local post = require("Module:RequestHelper").post

local lv1 = require("Module:ArtsData/lv1")
local VALID_IDS = {}
for _, role in pairs(lv1.roles) do
  for _, id in ipairs(role.ids) do
    VALID_IDS[id] = true
  end
end

local cache = {}

function p.fetchArt(artId)
  artId = tonumber(artId)
  if not artId or not VALID_IDS[artId] then
    return nil
  end
  local cached = cache[artId]
  if cached ~= nil then
    return cached
  end
  local ok, data = pcall(post, "bdat_common.pc_arts", artId)
  if not ok or type(data) ~= "table" or not data.row_id then
    cache[artId] = false
    return nil
  end
  cache[artId] = data
  return data
end

function p.fetchDesc(artId)
  return nil
end

function p.fetchApTable()
  return nil
end

function p.isValidArtId(artId)
  artId = tonumber(artId)
  return artId ~= nil and VALID_IDS[artId] == true
end

return p