From e537def31280802497788cd62ad68f429ad7b9a7 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 24 Jan 2024 20:15:10 +0200 Subject: [PATCH] Add return value to /sd command and quiet flag --- .../extensions/stable-diffusion/index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js index f2b4f096d..149c40ea2 100644 --- a/public/scripts/extensions/stable-diffusion/index.js +++ b/public/scripts/extensions/stable-diffusion/index.js @@ -20,7 +20,7 @@ import { } from '../../../script.js'; import { getApiUrl, getContext, extension_settings, doExtrasFetch, modules, renderExtensionTemplate } from '../../extensions.js'; import { selected_group } from '../../group-chats.js'; -import { stringFormat, initScrollHeight, resetScrollHeight, getCharaFilename, saveBase64AsFile, getBase64Async, delay } from '../../utils.js'; +import { stringFormat, initScrollHeight, resetScrollHeight, getCharaFilename, saveBase64AsFile, getBase64Async, delay, isTrueBoolean } from '../../utils.js'; import { getMessageTimeStamp, humanizedDateTime } from '../../RossAscends-mods.js'; import { SECRET_KEYS, secret_state } from '../../secrets.js'; import { getNovelUnlimitedImageGeneration, getNovelAnlas, loadNovelSubscriptionData } from '../../nai-settings.js'; @@ -145,8 +145,8 @@ const promptTemplates = { }; const helpString = [ - `${m('(argument)')} – requests to generate an image. Supported arguments: ${m(j(Object.values(triggerWords).flat()))}.`, - 'Anything else would trigger a "free mode" to make generate whatever you prompted. Example: \'/imagine apple tree\' would generate a picture of an apple tree.', + `${m('[quiet=false/true] (argument)')} – requests to generate an image and posts it to chat (unless quiet=true argument is specified). Supported arguments: ${m(j(Object.values(triggerWords).flat()))}.`, + 'Anything else would trigger a "free mode" to make generate whatever you prompted. Example: \'/imagine apple tree\' would generate a picture of an apple tree. Returns a link to the generated image.', ].join(' '); const defaultPrefix = 'best quality, absurdres, aesthetic,'; @@ -1693,7 +1693,7 @@ function getRawLastMessage() { return `((${processReply(lastMessage)})), (${processReply(situation)}:0.7), (${processReply(characterDescription)}:0.5)`; } -async function generatePicture(_, trigger, message, callback) { +async function generatePicture(args, trigger, message, callback) { if (!trigger || trigger.trim().length === 0) { console.log('Trigger word empty, aborting'); return; @@ -1731,7 +1731,12 @@ async function generatePicture(_, trigger, message, callback) { }; } + if (isTrueBoolean(args?.quiet)) { + callback = () => { }; + } + const dimensions = setTypeSpecificDimensions(generationType); + let imagePath = ''; try { const prompt = await getPrompt(generationType, message, trigger, quietPrompt); @@ -1740,7 +1745,7 @@ async function generatePicture(_, trigger, message, callback) { context.deactivateSendButtons(); hideSwipeButtons(); - await sendGenerationRequest(generationType, prompt, characterName, callback); + imagePath = await sendGenerationRequest(generationType, prompt, characterName, callback); } catch (err) { console.trace(err); throw new Error('SD prompt text generation failed.'); @@ -1750,6 +1755,8 @@ async function generatePicture(_, trigger, message, callback) { context.activateSendButtons(); showSwipeButtons(); } + + return imagePath; } function setTypeSpecificDimensions(generationType) { @@ -1964,6 +1971,7 @@ async function sendGenerationRequest(generationType, prompt, characterName = nul const filename = `${characterName}_${humanizedDateTime()}`; const base64Image = await saveBase64AsFile(result.data, characterName, filename, result.format); callback ? callback(prompt, base64Image, generationType) : sendMessage(prompt, base64Image, generationType); + return base64Image; } async function generateTogetherAIImage(prompt, negativePrompt) {