risum 모듈 — RISU modules[] — 기능 확장
👍 33 · 조회 2011 · 2026-01-14
코파일럿 무료모델 쌀먹으로 마조플을 즐기자! 사실 마조플 토글 끄고 료나 토글 켜고 장르태그 조절하면 내가 가해자인 고어도 됨 방금 1120 4o에서 하드고어 아웃풋 받고 어이없어서 재공유함 사실 컨텍은 제로칼로리 짚오일로 쌓았음 사실 내린적도 없음 구버전 폴더에서 발굴해서 영구 링크 달아준 거 뿐임 파일 제목은 챗사오용이라고 써있지만 챗사오에서 동작 보증 안함 그냥 구시대의 잔재일 뿐임 푸롬 https://drive.proton.me/urls/S4A5XRN8HC#CRAheElKxfK2 모듈 https://drive.proton.me/urls/8HS546ZR90#7bpSY8RwJwoZ 짚오일은 이 버전도 되긴 되는데 챗오용으로 뿌린 버전보다 잘되는지 나도 모르겠으니 차차 확인해 보려고 함 4.1 무료모델쌀먹 되는데 프롬이 없어서 못먹는사람들 안타까워서 근데 그사람들이 마조플을 좋아할진 모르지만 원본 올인원 파이브카드임 마조플 관심없으면 그거먹으세요 하드검열 걸리면 탈옥 토글도 켜보세요!!!! CC BY-NC-SA 4.0 국제 라이선스 적용 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다. 이 저작물은 아카라이브 커뮤니티 - AI 채팅 채널을 위해 공개되었으며, AI 채팅 채널 외 타 채널 혹은 커뮤니티에 공유, 배포 등으로 이용할 때에는 반드시 원 저작자의 이름과 출처를 명시해야 합니다. 상업적 용도의 경우 어떠한 이유로도 이용할 수 없습니다. 리믹스, 변형, 2차적 저작물을 작성하고 그 결과물을 공유할 경우에는 원 저작물과 동일한 조건의 CCL을 적용하여야 합니다.
올인원 개조
{
"name": "🎴 코이코이! 올인원 불법개조 챗사오용 전용 모듈",
"description": "올인원 개조",
"id": "76cdd0bc-b586-4a95-a55b-07aa34b43b69",
"regex": [
{
"comment": "──── ▼ 🛠️ 응답/상태창 ⚒️ ▼ ────",
"in": "",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "생각의사슬안보고싶어",
"in": "<Thoughts>(.*)</Thoughts>",
"out": "",
"type": "editdisplay",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "🖨️: 상태창 볼드체/이탤릭체 수정 1",
"in": "\\*\\*([^\\n]+?)\\*\\*(\\s?)(:|\\]|\\|)",
"out": "$1$2$3",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: 상태창 볼드체/이탤릭체 수정 2",
"in": "\\*\\*([^\\n]+?)(\\s?)(:|\\]|\\|)\\*\\*",
"out": "$1$2$3",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "💻: Footnotes 삭제 📆",
"in": "#{1,3} Footnotes",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: Confirmation 삭제",
"in": "## (Confirmation|Plan)\\s+([^#]+?)##",
"out": "##",
"type": "editdisplay",
"ableFlag": false,
"flag": "g"
},
{
"comment": "💻: 활성화된 토글 표시 2 🖥️",
"in": "^(.+)$",
"out": "{{#if {{? {{getglobalvar::toggle_toggleDisplay}}=0 }} }}\n{{#if {{? {{getvar::currentIndex}}={{chat_index}} }} }}\n{{#if {{? {{getglobalvar::toggle_rpg}}>=1 }} }} [🎪 시뮬봇 모드]{{/if}}{{/if}}{{/if}}\n\n$1",
"type": "editdisplay",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "🎴수정된 상태창 CSS",
"in": "-.+: (.+?)\\n+-.+: (.+?)\\n+-.+: ([^\\n]+)",
"out": " <div class=\"indicator\">\n <div class=\"textbox\">\n <span class=\"text\">\n $1\n </span>\n <span class=\"text\">\n $2\n </span>\n <span class=\"text\">\n $3\n </span>\n </div>\n </div>\n<br>",
"type": "disabled",
"ableFlag": true,
"flag": "gi<move_top>"
},
{
"comment": "📜: Response 앞부분 삭제",
"in": "[\\s\\S]*#+ Response\\n+([\\s\\S]*)",
"out": "## Response\n$1",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "📜🔒: Confirmation 삭제",
"in": "^.*?## (Confirmation|Plan)[^#]+?##",
"out": "##",
"type": "disabled",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "📜🔒: 생각의 사슬 삭제",
"in": "^([^#]*?)##",
"out": "##",
"type": "disabled",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "──── ▼ 💭 추론/CoT 💭 ▼ ────",
"in": "",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "🖨️: 사전 분석 → Pre-analysis",
"in": "## 사전\\s?분석\\n{1,2}(.)",
"out": "## Pre-analysis\n$1",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: 추론 과정 → Reasoning Process",
"in": "## 추론\\s?과정\\n{1,2}(.)",
"out": "## Reasoning Process\n$1",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: 이전 장면 & 입력 요약 → Previous Scene & Input Summary",
"in": "## 이전\\s?장면 & 입력\\s?요약\\n{1,2}(.)",
"out": "## Previous Scene & Input Summary\n$1",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "💻: Pre-analysis 접기",
"in": "#{1,3} Pre-analysis([^#]+?)##",
"out": "<details>\n <summary><strong>💭 Pre-analysis</strong></summary>\n <div>\n$1\n <div>\n</details>\n\n##",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: Reasoning Process 접기",
"in": "#{1,3} Reasoning Process([^#]+?)##",
"out": "<details>\n <summary><strong>🧠 Reasoning Process</strong></summary>\n <div>\n$1\n <div>\n</details>\n\n##",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: Previous Scene & Input Summary 접기",
"in": "#{1,3} Previous Scene & Input Summary([^#]+?)##",
"out": "<details>\n <summary><strong>📝 Previous Scene & Input Summary</strong></summary>\n <div>\n$1\n <div>\n</details>\n\n##",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "📜🔒: Pre-analysis 전체 삭제",
"in": "[^#]+?#{1,3} (Pre-analysis|사전\\s?분석)[^#]+?",
"out": "",
"type": "disabled",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "📜🔒: Reasoning Process 전체 삭제",
"in": "[^#]+?#+ (Reasoning Process|추론\\s?과정)([^#]+?)",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "📜🔒: Previous Scene & Input Summary 선택적 제거",
"in": "[^#]+?(#+ Previous Scene & Input Summary[^#]+?)\\n{1,3}(#+ Chapter)",
"out": "{{#if {{? {{getglobalvar::toggle_summaryRequest}}=0 }} }}$1{{/if}}\n\n$2",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "──── ▼ ✅ 이전 버전/ 타프롬 호환 🕹️ ▼ ────",
"in": "",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "챕터->그거",
"in": "#{1,3} Chapter([^\\n]+)",
"out": "## Response",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "💻: Approved 삭제",
"in": "#{1,3} Approved.?",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: Response 삭제",
"in": "#{1,3} (Response|응답)",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "📜: Approved 삭제",
"in": "#{1,3} Approved[\\.:]?",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "──── ▼ 🪛 찐빠 보정 🔩 ▼ ────",
"in": "",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "💻: 가로줄 삭제",
"in": "---",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "🖨️: 과도한 띄어쓰기 보정",
"in": "[ ]{2,}",
"out": " ",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: \"///\" 삭제",
"in": "\\/\\/\\/",
"out": "",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: <p> 삭제",
"in": "<\\/?p>",
"out": "",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: <hr> 삭제",
"in": "<\\/?hr>",
"out": "",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: <br> 삭제",
"in": "<\\/?br>",
"out": "",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "🖨️: 코드블럭 삭제",
"in": "```",
"out": "",
"type": "editoutput",
"ableFlag": false
},
{
"comment": "💻: 코드블럭 삭제",
"in": "```",
"out": "",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "📜: 가로줄 삭제",
"in": "---",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "📜: 코드블럭 삭제",
"in": "```",
"out": "",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "📜: 과도한 말줄임표 보정",
"in": "(\\.{4,8}|…{1,2})",
"out": "...",
"type": "editprocess",
"ableFlag": false
},
{
"comment": "📜: <details></details> 오류 제거",
"in": "<details>.+?<\\/details>",
"out": "",
"type": "editprocess",
"ableFlag": true,
"flag": "gs"
},
{
"comment": "──── ▼ 📖 가독성 👁️ ▼ ────",
"in": "",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "💻: 대사 색상 보정",
"in": "(\\S)(\\\"|”)(\\*{0,2})([가-힣])",
"out": "$1$2 $3$4",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: 대사 볼드체/이탤릭체 보정 1",
"in": "(\\S)(\\*{1,2})(\\\"|“)",
"out": "$1$3$2",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: 대사 볼드체/이탤릭체 보정 2",
"in": "(\\S)(\\\"|”)(\\s?)(\\*{1,2})",
"out": "$1$4$3$2",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "────────────────────",
"in": "<!DOCTYPE html> <html lang=\"ko\"> <head> <meta charset=\"UTF-8\"> <title>Example</title> <style> .second-wrapper { max-width: 100vw; padding: 2.5em 2em 1em; margin: 1em 0; border: 0.1em solid rgba(255, 180, 180, 0.8); /* 빨간색 테두리 */ border-radius: 0.6em; background-color: rgba(5, 5, 5, 0.1); box-shadow: 0 0 1.5em #FF4500, 0 0 1em rgba(255, 69, 0, 0.1); /* 빨간색 그림자 */ text-align: center; position: relative; animation: blink 1s infinite alternate; /* 깜박거리는 이펙트 */ } @keyframes blink { 0% { box-shadow: 0 0 1.5em #FF4500, 0 0 1em rgba(255, 69, 0, 0.1); } 100% { box-shadow: 0 0 2em #FF4500, 0 0 1.5em rgba(255, 69, 0, 0.3); } } .special-font { font-family: 'Courier New', monospace, 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-weight: bolder; background: -webkit-linear-gradient(45deg, #ffd3d3, #deb0b0); /* 빨간색 그라디언트 */ -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 0 0 0.1em rgba(255, 211, 211, 0.5); } .courier-font { font-family: 'Courier New', monospace, 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-size: 1em; } .light-red { color: #ffd3d3; /* 밝은 빨간색 텍스트 */ text-shadow: 0 0 0.1em #ffd3d3; } .title { position: absolute; top: -1.25em; left: 50%; transform: translateX(-50%); padding: 0 0.5em; background-color: rgba(5, 5, 5, 0.1); font-family: 'Courier New', monospace, 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-weight: bolder; color: #FF4500; /* 빨간색 제목 */ text-shadow: 0 0 0.1em rgba(255, 69, 0, 0.8); font-size: 1.5em; /* $1 텍스트보다 50% 더 큰 폰트 크기 */ } </style> </head> <body> <div class=\"second-wrapper\"> <div class=\"title\">인풋 번역</div> <span class=\"courier-font light-red\">$1</span> <!-- 빨간색 텍스트 --> </div> </body> </html>",
"out": "",
"type": "disabled",
"ableFlag": false
},
{
"comment": "💻: 속마음 색상 보정",
"in": "([가-힣])(\\'|’)(\\*{0,2})([가-힣])",
"out": "$1$2 $3$4",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: 속마음 볼드체/이탤릭체 보정 1",
"in": "(\\S)(\\*{1,2})(\\'|‘)",
"out": "$1$3$2",
"type": "editdisplay",
"ableFlag": false
},
{
"comment": "💻: 속마음 볼드체/이탤릭체 보정 2",
"in": "(\\S)(\\'|’)(\\s?)(\\*{1,2})",
"out": "$1$4$3$2",
"type": "editdisplay",
"ableFlag": false
}
],
"type": "risuModule",
"trigger": [
{
"comment": "",
"type": "start",
"conditions": [],
"effect": [
{
"type": "triggerlua",
"code": "-- From All In One\n-- 본인은 삭제만 했습니다.\n\n--------------------------------------------------\n-- # Utility Functions: Data Manager & Text Trimmer\n--------------------------------------------------\n\n--------------------------------------------------\n-- 1. 재귀적 deep copy 함수 (내부 테이블까지 복사)\n--------------------------------------------------\nfunction copyObjectData(original)\n local copy = {}\n for key, value in pairs(original) do\n if type(value) == \"table\" then\n copy[key] = copyObjectData(value)\n else\n copy[key] = value\n end\n end\n return copy\nend\n\n--------------------------------------------------\n-- 2. 구분자를 기준으로 문자열을 구분하는 함수\n--------------------------------------------------\nfunction string:split(delimiter)\n local splitTexts = {}\n local number = 1\n local starPos, endPos = self:find(delimiter, number)\n\n while starPos do\n table.insert(splitTexts, self:sub(number, starPos))\n number = endPos + 1\n starPos, endPos = self:find(delimiter, number)\n end\n\n table.insert(splitTexts, self:sub(number))\n\n return splitTexts\nend\n\n--------------------------------------------------\n-- 8. 제목 밑의 과도한 줄바꿈 정돈 함수\n--------------------------------------------------\nfunction normalizeHeaderNewlines(text)\n local output = text:gsub(\"(#.-\\n)(.-)(\\n#)\", function(header, body, next_header)\n local cleaned_body = body:gsub(\"\\n\\n+\", \"\\n\")\n return header .. cleaned_body .. next_header\n end)\n\n -- 마지막 제목 이후 텍스트 처리\n output = output:gsub(\"(#.-\\n)(.+)$\", function(header, body)\n local cleaned_body = body:gsub(\"\\n\\n+\", \"\\n\")\n return header .. cleaned_body\n end)\n\n return output\nend\n\n--------------------------------------------------\n-- # Send a Chat as System Role Message\n--------------------------------------------------\n\n--------------------------------------------------\n-- 1. \"NewChat\" 메모를 가진 system 메시지를 제거하는 함수\n--------------------------------------------------\nfunction removeNewChatMessage(data)\n -- 역순 순회하여 table.remove 시 인덱스 오류 방지\n for i = #data, 1, - 1 do\n if data[i].memo == \"NewChat\" and data[i].role == \"system\" then\n table.remove(data, i)\n end\n end\nend\n\n--------------------------------------------------\n-- 2. 메모가 존재하는 마지막 메시지 인덱스 반환 함수\n--------------------------------------------------\nfunction getLastMemoIndex(data, role)\n for i = #data, 1, - 1 do\n if data[i].memo and data[i].role == role then\n return i\n end\n end\n return nil\nend\n\n--------------------------------------------------\n-- 3. 채팅 포맷 판별 함수\n--------------------------------------------------\nfunction setChatFormat(data)\n -- 시스템 메세지의 개수는 이전 챗을 기준으로 구분\n local frontSysCount = 0\n local backSysCount = 0\n local backUserCount = 0\n local backFirstMessageIndex = 0\n local foundFirst = false\n\n -- 앞 부분 연속 시스템 메시지 개수 카운트\n while data[frontSysCount+1] and data[frontSysCount+1].role == \"system\" do\n frontSysCount = frontSysCount + 1\n end\n\n for i = frontSysCount + 1, #data do\n if not foundFirst and data[i].memo == nil and data[i].role == \"assistant\" then\n backFirstMessageIndex = frontSysCount + 2\n foundFirst = true \n elseif data[i] and data[i].memo ~= nil and data[i].role == \"user\" then\n foundFirst = true\n end\n\n if data[i].memo ~= nil and i < getLastMemoIndex(data, \"user\") then\n backFirstMessageIndex = backFirstMessageIndex + 1\n elseif i < getLastMemoIndex(data, \"user\") and i >= backFirstMessageIndex then\n if data[i].role == \"system\" then\n backSysCount = backSysCount + 1\n elseif data[i].role == \"user\" then\n backUserCount = backUserCount + 1\n end\n end\n end\n\n print(\"이후 프롬 첫 인덱스: \" .. backFirstMessageIndex .. \"\\n이후 시스템 프롬 개수: \" .. backSysCount .. \"\\n이후 유저 프롬 개수: \" .. backUserCount)\n \n return backFirstMessageIndex, backSysCount, backUserCount\nend\n\n--------------------------------------------------\n-- 4. 수파 메모리를 정돈하는 함수\n--------------------------------------------------\nfunction trimSupaMemory(data)\n local backFirstMessageIndex, backSysCount, backUserCount = setChatFormat(data)\n\n for i = 1, #data do\n if data[i].memo == \"supaMemory\" then\n data[i].content = data[i].content:gsub(\"<Past Events Summary>%s*\", \"\")\n data[i].content = data[i].content:gsub(\"%s*</Past Events Summary>\", \"\")\n data[i].content = data[i].content:gsub(\"<Past Events Details>%s*\", \"\")\n data[i].content = data[i].content:gsub(\"%s*</Past Events Details>\", \"\")\n end\n end\n\n return data\nend\n\n--------------------------------------------------\n-- 5. 채팅 데이터에 제목 추가 및 역할 변경 함수\n--------------------------------------------------\nfunction addTitlesAndChangeRoles(data)\n -- 포맷 관련 설정\n local backFirstMessageIndex, backSysCount, backUserCount = setChatFormat(data)\n \n local previousScript = { role = \"system\", content = \"---\\n\\n# Previous Script\\n\\n## Input\\nLet's begin the role-play as instructed.\" }\n local startRoleplay = { role = \"user\", content = \"## Input\\nLet's begin the role-play as instructed.\" }\n local foundFirst = false\n\n -- 전체 메시지 처리\n for i = 1, #data do\n -- 퍼스트 메세지 처리\n if not foundFirst and data[i].memo == nil and data[i].role == \"assistant\" then\n if getLastMemoIndex(data, \"assistant\") ~= nil then\n table.insert(data, i, previousScript)\n data[i+1].role = \"system\"\n data[i+1].content = \"## Response\\n\" .. data[i+1].content\n\n else\n table.insert(data, i, startRoleplay)\n end\n foundFirst = true\n goto continue\n elseif data[i].memo ~= nil and data[i].role == \"user\" then\n foundFirst = true\n end\n\n -- 메모가 없는 메세지는 건너뛰기\n if data[i].memo == nil then\n goto continue\n end\n \n -- 메모가 있는 user 메시지 처리\n if data[i].role == \"user\" and data[i].memo ~= \"supaMemory\" then\n if i ~= getLastMemoIndex(data, \"user\") then\n -- 마지막 메모가 아닌 경우\n data[i].role = \"system\"\n data[i].content = \"## Input\\n\" .. data[i].content\n end\n -- 메모가 있는 assistant 메시지 처리\n elseif data[i].role == \"assistant\" then\n if i ~= getLastMemoIndex(data, \"assistant\") then\n -- 마지막 메모가 아닌 경우\n data[i].role = \"system\"\n else\n -- 마지막 메모인 경우\n end\n end\n\n ::continue::\n end\n\n -- print(\"지시가 시작되는 인덱스: \" .. backFirstMessageIndex .. \"\\n뒤 부분 시스템 개수: \" .. backSysCount .. \"\\n뒤 부분 사용자 개수: \" .. backUserCount .. \"\\n\")\nend\n\n--------------------------------------------------\n-- 6. 연속된 동일 역할의 메시지 병합 함수\n--------------------------------------------------\nfunction mergeConsecutiveRoleChat(data)\n local merged = {}\n local currentChat = nil\n\n for i, chat in ipairs(data) do\n -- 각 메시지가 role과 content 필드를 가지고 있는지 검증\n if currentChat and currentChat.role == chat.role then\n -- 이전 메시지와 역할이 같으면 content를 두 줄바꿈으로 이어붙임\n currentChat.content = currentChat.content .. \"\\n\\n\" .. chat.content\n else\n -- 다른 역할이면, 현재 메시지를 결과 테이블에 저장한 후 새 메시지 시작\n if currentChat then\n table.insert(merged, currentChat)\n end\n currentChat = { role = chat.role, content = chat.content }\n end\n end\n\n -- 마지막 남은 메시지 추가\n if currentChat then\n table.insert(merged, currentChat)\n end\n\n -- 모든 메시지의 content에서 과도한 줄바꿈(\\n\\n\\n 이상)을 2줄로 정리 및 좌우 공백 제거\n for _, chat in ipairs(merged) do\n chat.content = chat.content:gsub(\"\\n%s*\\n%s*\\n+\", \"\\n\\n\")\n end\n\n -- 기존 테이블을 클리어하고, 병합 결과로 재구성합니다.\n for i = 1, #data do\n data[i] = nil\n end\n for i, chat in ipairs(merged) do\n data[i] = chat\n end\nend\n\n--------------------------------------------------\n-- 7. 편집 요청 시 호출되는 최종 데이터 처리 함수\n--------------------------------------------------\nlistenEdit(\"editRequest\", function(triggerId, data)\n if not data then return data end\n -- \"NewChat\" 메시지 제거\n removeNewChatMessage(data)\n -- 수파메모리 정돈\n trimSupaMemory(data)\n -- 제목 추가 및 역할 변경 처리\n addTitlesAndChangeRoles(data)\n -- 연속된 동일 역할 메시지 병합\n mergeConsecutiveRoleChat(data)\n -- 처리 결과 디버그 로그 출력\n -- printRequestLog(data)\n return data\nend)\n\nfunction printRequestLog(data)\n for i = 1, #data do\n local chat = data[i]\n local role_icon = \"\"\n if chat.role == \"user\" then\n role_icon = \"👨🦰\"\n elseif chat.role == \"assistant\" then\n role_icon = \"🤖\"\n elseif chat.role == \"system\" then\n role_icon = \"⚙️\"\n else\n role_icon = \"🚫\"\n end\n print(string.format(\"<%s %s %s>\\n%s\\n\", role_icon, chat.role, role_icon, chat.content))\n end\nend\n"
}
],
"lowLevelAccess": true
}
],
"lowLevelAccess": true,
"creator_notes": "",
"tags": [],
"license": "CC BY-NC-SA 4.0",
"rtype": "module",
"hideIcon": false,
"lorebook": [],
"assets": [],
"backgroundEmbedding": "<style>\n @import url('https://fonts.googleapis.com/css2?family=Bitter:ital,wght@0,100..900;1,100..900&family=Gowun+Batang&display=swap');\n \n .indicator {\n display: flex;\n flex-direction: column;\n border: double #ffffff;\n border-width: 6px 0;\n max-width: 400px;\n margin: 1em auto;\n }\n \n .textbox {\n display: flex;\n flex-direction: column;\n margin: 0.5em auto;\n width: fit-content;\n }\n \n .text {\n line-height: 1em;\n font-size: 1em;\n font-family: \"Gowun Batang\";\n font-optical-sizing: auto;\n font-style: italic;\n font-weight: 400;\n color: #ffffff;\n }\n </style>",
"customModuleToggle": "nsfw=🔞 섹스 토글(직접적 묘사용)\nsm=유저는 마조입니다\nmoreRape=ㄴ강간해주세요=select=없음,해주세요,반항해도따먹어주세요\nstab=자율적 폭력성 강화 토글\nstab2=유저를 패세요\n=장르/모드 설정=divider\ngenre_text=📚 장르:=text\ntag_text=📚 태그:=text\nreference_text=📚 레퍼런스:=text\nmode=🎮 모드:=select=🎭 역할극, ✒️ 약사칭, 📖 소설\npowerNovel=페르소나 사칭 더 해줘\npov=👁️ 시점:=select=선택 안함, 1️⃣ 1인칭, 3️⃣ 3인칭, 👨🦰 페르소나 시점\nutil= 😊 OOC | 로어북 토글\nrpg=🎪 시뮬봇 토글\n=묘사 강화/반복 방지 설정=divider\nfastPace=🚀 빠른 전개 토글\nback= 🏙️ 배경 묘사 토글\nagency=🏃 전개 능동성 향상 토글\noil=🫒올리브오일\nmyOil=🌼시뮬봇 NPC 능동성 강화=select=없음, 그대로, 문법수정\n=분량/언어 설정=divider\nminLength=➖ 최소 문단:=text\nmaxLength=➕ 최대 문단:=text\ninfinity=문단제한없음\nlang=🗣️ 언어:=select=디폴트, 🇬🇧 영어, 🇰🇷 한국어, 🇯🇵 일본어, 🇨🇳 중국어\ndialog=🗨️ 대사:=select=선택 안함, 🇰🇷 한국어, 🇯🇵 일본어, 🇨🇳 중국어\nlangFormat=🔠 응답 언어 강조\n=상태창/커스텀 설정=divider\nstat= 📆 상태창 토글\nlangFootnote=📆 상태창 언어 강조:=select=선택 안함, 🇬🇧 영어, 🇰🇷 한국어, 🇯🇵 일본어, 🇨🇳 중국어, 소설가식\nmemoryPosition=📒기억 로어북 자리 활성화",
"namespace": "KoikoiGPT"
}