diff --git a/public/index.html b/public/index.html index e05b56d82..416cebd48 100644 --- a/public/index.html +++ b/public/index.html @@ -1017,6 +1017,19 @@ if you use quotes manually for speech. +
+
+ Replace empty message +
+
+ + Send this text instead of nothing when the text box is empty. + +
+
+ +
+

diff --git a/public/script.js b/public/script.js index 45d8f0ca0..a040adf17 100644 --- a/public/script.js +++ b/public/script.js @@ -1915,6 +1915,10 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, await sendMessageAsUser(textareaText, messageBias); } } + else if (textareaText == "" && !automatic_trigger && type !== 'quiet' && main_api == 'openai' && oai_settings.send_if_empty.trim().length > 0) { + await sendMessageAsUser(oai_settings.send_if_empty.trim(), messageBias); + } + //////////////////////////////////// const scenarioText = chat_metadata['scenario'] || characters[this_chid].scenario; let charDescription = baseChatReplace(characters[this_chid].description.trim(), name1, name2); diff --git a/public/scripts/openai.js b/public/scripts/openai.js index f20dbd015..73fb8dade 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -111,6 +111,7 @@ const default_settings = { nsfw_toggle: true, enhance_definitions: false, wrap_in_quotes: false, + send_if_empty: '', nsfw_first: false, main_prompt: default_main_prompt, nsfw_prompt: default_nsfw_prompt, @@ -143,6 +144,7 @@ const oai_settings = { nsfw_toggle: true, enhance_definitions: false, wrap_in_quotes: false, + send_if_empty: '', nsfw_first: false, main_prompt: default_main_prompt, nsfw_prompt: default_nsfw_prompt, @@ -970,6 +972,7 @@ function loadOpenAISettings(data, settings) { oai_settings.legacy_streaming = settings.legacy_streaming ?? default_settings.legacy_streaming; oai_settings.max_context_unlocked = settings.max_context_unlocked ?? default_settings.max_context_unlocked; oai_settings.nsfw_avoidance_prompt = settings.nsfw_avoidance_prompt ?? default_settings.nsfw_avoidance_prompt; + oai_settings.send_if_empty = settings.send_if_empty ?? default_settings.send_if_empty; oai_settings.wi_format = settings.wi_format ?? default_settings.wi_format; oai_settings.claude_model = settings.claude_model ?? default_settings.claude_model; oai_settings.windowai_model = settings.windowai_model ?? default_settings.windowai_model; @@ -1011,6 +1014,7 @@ function loadOpenAISettings(data, settings) { $('#impersonation_prompt_textarea').val(oai_settings.impersonation_prompt); $('#nsfw_avoidance_prompt_textarea').val(oai_settings.nsfw_avoidance_prompt); $('#wi_format_textarea').val(oai_settings.wi_format); + $('#send_if_empty_textarea').val(oai_settings.send_if_empty); $('#temp_openai').val(oai_settings.temp_openai); $('#temp_counter_openai').text(Number(oai_settings.temp_openai).toFixed(2)); @@ -1150,6 +1154,7 @@ async function saveOpenAIPreset(name, settings) { nsfw_toggle: settings.nsfw_toggle, enhance_definitions: settings.enhance_definitions, wrap_in_quotes: settings.wrap_in_quotes, + send_if_empty: settings.send_if_empty, nsfw_first: settings.nsfw_first, main_prompt: settings.main_prompt, nsfw_prompt: settings.nsfw_prompt, @@ -1427,6 +1432,7 @@ function onSettingsPresetChange() { nsfw_toggle: ['#nsfw_toggle', 'nsfw_toggle', true], enhance_definitions: ['#enhance_definitions', 'enhance_definitions', true], wrap_in_quotes: ['#wrap_in_quotes', 'wrap_in_quotes', true], + send_if_empty: ['#send_if_empty_textarea', 'send_if_empty', false], nsfw_first: ['#nsfw_first', 'nsfw_first', true], jailbreak_system: ['#jailbreak_system', 'jailbreak_system', true], main_prompt: ['#main_prompt_textarea', 'main_prompt', false], @@ -1718,6 +1724,11 @@ $(document).ready(function () { saveSettingsDebounced(); }); + $("#send_if_empty_textarea").on('input', function () { + oai_settings.send_if_empty = $('#send_if_empty_textarea').val(); + saveSettingsDebounced(); + }); + $('#nsfw_first').on('change', function () { oai_settings.nsfw_first = !!$('#nsfw_first').prop('checked'); saveSettingsDebounced();