[fix] genbots not work

This commit is contained in:
kwaroran
2023-11-27 21:56:35 +09:00
parent 1d15eacd72
commit 8ad6eaa400

View File

@@ -2,18 +2,21 @@ import { writeInlayImage } from "../image";
import type { character } from "../storage/database"; import type { character } from "../storage/database";
import { generateAIImage } from "./stableDiff"; import { generateAIImage } from "./stableDiff";
const imggenRegex = [/<ImgGen="(.+?)">/gi, /{{ImgGen="(.+?)"}}/gi] as const
export function runInlayScreen(char:character, data:string):{text:string, promise?:Promise<string>} { export function runInlayScreen(char:character, data:string):{text:string, promise?:Promise<string>} {
if(char.inlayViewScreen){ if(char.inlayViewScreen){
if(char.viewScreen === 'emotion'){ if(char.viewScreen === 'emotion'){
return {text: data.replace(/<Emotion="(.+?)">/g, '{{emotion::$1}}')} return {text: data.replace(/<Emotion="(.+?)">/gi, '{{emotion::$1}}')}
} }
if(char.viewScreen === 'imggen'){ if(char.viewScreen === 'imggen'){
return { return {
text: data.replace(/<ImgGen="(.+?)">/g,'[Generating...]'), text: data.replace(imggenRegex[0],'[Generating...]').replace(imggenRegex[1],'[Generating...]'),
promise : (async () => { promise : (async () => {
for(const regex of imggenRegex){
const promises:Promise<string|false>[] = []; const promises:Promise<string|false>[] = [];
const neg = char.newGenData.negative const neg = char.newGenData.negative
data.replace(/<ImgGen="(.+?)">/g, (match, p1) => { data.replace(regex, (match, p1) => {
const prompt = char.newGenData.prompt.replaceAll('{{slot}}', p1) const prompt = char.newGenData.prompt.replaceAll('{{slot}}', p1)
promises.push((async () => { promises.push((async () => {
const v = await generateAIImage(prompt, char, neg, 'inlay') const v = await generateAIImage(prompt, char, neg, 'inlay')
@@ -28,13 +31,15 @@ export function runInlayScreen(char:character, data:string):{text:string, promis
return match return match
}) })
const d = await Promise.all(promises) const d = await Promise.all(promises)
return data.replace(/<ImgGen="(.+?)">/g, () => { data = data.replace(regex, () => {
const result = d.shift() const result = d.shift()
if(result === false){ if(result === false){
return '' return ''
} }
return result return result
}) })
}
return data
})() })()
} }
} }