{ "id": "4b674802-fcff-47d3-baf5-8acb21e055aa", "name": "MyPreset 规则集", "description": "从 SillyTavern 导入的规则", "rules": [ { "id": "78b99f83-1fca-4a74-aa23-c19081774315", "scriptName": "隐藏-thinking", "findRegex": ".*?<\\/thinking>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 0, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "565c2e23-be93-44b8-bfba-e48103484dd2", "scriptName": "隐藏-MVU变量更新", "findRegex": "[\\s\\S]*?", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 1, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "a3411920-e1b2-4cea-8513-dbb41972648a", "scriptName": "隐藏-COT-正文前", "findRegex": ".*", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 2, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "0e93402e-f9f3-4049-bfc0-4b21b86b9bb4", "scriptName": "隐藏-COT-正文中", "findRegex": ".*?<\\/COT-MID>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 3, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "dbf06b5e-f694-475d-8ed8-4fdc62833944", "scriptName": "隐藏-表格", "findRegex": ".*?<\\/tableEdit>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 4, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "7808d064-d7d1-4f5d-b7a1-f490e5b7b934", "scriptName": "隐藏-表格-确保", "findRegex": "<填写表格>.*?<\\/填写表格>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 5, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "26beb992-6895-41fc-96a5-0f87c481d034", "scriptName": "对AI隐藏图像提示词", "findRegex": "\\[img-gen\\].*?\\[/img-gen\\]", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": false, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 6, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "f9632716-675d-4d66-b022-32ad035a544e", "scriptName": "美化-pornhub小剧场", "findRegex": "(?.*?<\\/pornhub_video>)", "replaceString": "```\n\n\n\n \n \n Pornhub Style Video Card\n \n\n\n
\n \n
\n
\n
\n\n \n
\n
\n
\n
\n
\n\n
\n

\n

\n\n
\n\n
\n \n
\n\n
\n\n
\n

评论

\n
\n
\n
\n
\n\n \n\n\n```", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": false, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 7, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "5f345459-8066-4df0-9641-5fa9113740ab", "scriptName": "对AI隐藏-小剧场", "findRegex": ".*?<\\/pornhub_video>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": false, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 8, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "e301e033-fe97-4b12-b02e-7d8f76a2b324", "scriptName": "对AI隐藏-小剧场-确保", "findRegex": "<小剧场>.*?<\\/小剧场>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": false, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 9, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "37c62238-b6d5-4445-8fa7-068b68e35109", "scriptName": "月经追踪状态栏", "findRegex": "", "replaceString": "```\n\n\n\n\n<%\nif (runType == 'render')\n{\n function SafeGetValue(value, defaultValue = \"\") {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n if (Array.isArray(value)) {\n return value.length !== 0 ? value[0] : defaultValue;\n }\n return value;\n }\n \n function SafeGetDescription(value, defaultValue = \"\") {\n if (Array.isArray(value) && value.length > 1) {\n return value[1];\n }\n return defaultValue;\n }\n \n // 获取周期进度百分比\n function getCycleProgress(day) {\n return Math.min((day / 28) * 100, 100);\n }\n \n // 判断是否为危险期(根据分类判断)\n function isDangerousPeriod(category) {\n return category.includes('排卵期') || category.includes('危险期');\n }\n \n // 获取周期图标(根据全局calculateMenstrualCycle返回的分类)\n function getCycleIcon(category) {\n if (category.includes('月经期')) return '🩸';\n if (category.includes('排卵期')) return '🌸';\n if (category.includes('安全期')) return '✅';\n return '📅';\n }\n \n // 获取周期颜色(根据全局calculateMenstrualCycle返回的分类)\n function getCycleColor(category) {\n if (category.includes('月经期')) return '#DC143C';\n if (category.includes('排卵期')) return '#FF1493';\n if (category.includes('安全期')) return '#32CD32';\n return '#666';\n }\n \n // 获取受孕概率等级(基于天数,与计算器函数逻辑一致)\n function getFertilityLevel(day) {\n if (day >= 1 && day <= 5) return 0; // 月经期\n if (day >= 12 && day <= 16) return 5; // 排卵期高峰\n if (day >= 10 && day <= 19) return 4; // 排卵期\n if (day >= 6 && day <= 22) return 2; // 次级可能\n return 1; // 安全期\n }\n\nconst data = window.TavernHelper.getVariables({type: 'message', message_id: message_id});\nconst msg_data = data.stat_data;\n\n// 动态获取所有有月经数据的角色\nconst characters = [];\nfor (const key in msg_data) {\n if (msg_data[key] && msg_data[key].月经 && msg_data[key].月经.周期天数) {\n // 优先使用姓名字段,如果没有则使用键名\n const displayName = SafeGetValue(msg_data[key].姓名, key);\n characters.push({\n key: key,\n name: displayName,\n data: msg_data[key]\n });\n }\n}\n%>\n\n\n\n
\n
\n \n
\n
\n 🌸\n 月经周期追踪\n <% if (characters.length > 0) { %>\n (<%- characters.length %> 人)\n <% } %>\n
\n
\n
\n\n \n
\n <% if (characters.length === 0) { %>\n
\n
📅
\n
暂无月经周期数据
\n
请在角色数据中添加月经周期信息
\n
\n <% } else { %>\n \n
\n <% characters.forEach((char, index) => { %>\n \n <% }); %>\n
\n\n \n <% characters.forEach((char, index) => { \n const cycleDay = SafeGetValue(char.data.月经.周期天数, 1);\n const cycleInfo = typeof calculateMenstrualCycle !== 'undefined' \n ? calculateMenstrualCycle(Number(cycleDay))\n : ['未知', '数据加载中'];\n const cycleCategory = cycleInfo[0];\n const cyclePhase = cycleInfo[1];\n const cycleIcon = getCycleIcon(cycleCategory);\n const cycleColor = getCycleColor(cycleCategory);\n const cycleProgress = getCycleProgress(cycleDay);\n const isDanger = isDangerousPeriod(cycleCategory);\n // 计算距离下次月经的天数(如果当前在月经期,显示0;否则显示剩余天数)\n const daysUntilPeriod = cycleDay <= 5 ? 0 : (29 - cycleDay);\n const fertilityLevel = getFertilityLevel(cycleDay);\n %>\n
\" class=\"tab-content <%= index === 0 ? 'active' : '' %>\">\n
\n
\n
<%- cycleIcon %>
\n
\n
;\">\n <%- cycleCategory.replace(/(.*?)/g, '') %>\n <% if (isDanger) { %>\n ⚠️ 危险期\n <% } else if (cycleDay >= 1 && cycleDay <= 5) { %>\n \n <% } else { %>\n ✓ 安全期\n <% } %>\n
\n
周期第 <%- cycleDay %> 天 / 共 28 天
\n
\n
\n \n
\n
%; background: linear-gradient(90deg, <%- cycleColor %> 0%, <%- cycleColor %>dd 100%);\">
\n
\n \n
;\">\n <%- cyclePhase %>\n
\n \n
\n
\n
距离下次月经
\n
;\">\n <% if (daysUntilPeriod === 0) { %>\n 进行中\n <% } else { %>\n <%- daysUntilPeriod %> 天\n <% } %>\n
\n
\n
\n
周期进度
\n
;\"><%- Math.round(cycleProgress) %>%
\n
\n
\n \n
; color: <%- cycleColor %>;\">\n
\n <% if (cycleDay >= 1 && cycleDay <= 5) { %>\n 🩸 月经期间\n <% } else if (fertilityLevel >= 4) { %>\n 💋 受孕概率:高\n <% } else if (fertilityLevel >= 2) { %>\n 🤔 受孕概率:中\n <% } else { %>\n 😌 受孕概率:低\n <% } %>\n
\n
\n <% for (let i = 0; i < 5; i++) { %>\n
\">
\n <% } %>\n
\n
\n
\n
\n <% }); %>\n <% } %>\n
\n
\n
\n\n\n\n<% } %>\n\n```\n", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": false, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": true, "order": 10, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "26ec780e-149f-489d-a177-de875e559e35", "scriptName": "[选项]主题", "findRegex": "((?:(?!).)*?)", "replaceString": "```html\n\n \n \n```", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": true, "promptOnly": false, "runOnEdit": true, "minDepth": null, "maxDepth": 2, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 11, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null }, { "id": "e61a23ac-bc46-4d49-9f3f-a1ec4756c857", "scriptName": "[选项]隐藏", "findRegex": "(.*?)<\\/options>", "replaceString": "", "trimStrings": [], "placement": [ 2 ], "substituteRegex": 0, "markdownOnly": false, "promptOnly": true, "runOnEdit": true, "minDepth": null, "maxDepth": null, "scope": "preset", "characterName": null, "presetName": "MyPreset", "disabled": false, "order": 12, "createdAt": 1778078941, "updatedAt": 1778078941, "description": null } ], "createdAt": 1778078941, "updatedAt": 1778078941, "version": 1, "isSillyTavernFormat": true }