From b1c9fee29e05062bc234e8e62d981a51683e7635 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Tue, 21 May 2024 15:46:41 +0300 Subject: [PATCH] #2188 Make first message not required --- public/script.js | 37 +++++++++++++++++++++++------------ public/scripts/group-chats.js | 9 +++++++-- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/public/script.js b/public/script.js index febbc2204..a8d69984f 100644 --- a/public/script.js +++ b/public/script.js @@ -469,7 +469,6 @@ let settingsReady = false; let currentVersion = '0.0.0'; let displayVersion = 'SillyTavern'; -export const default_ch_mes = 'Hello'; let generatedPromptCache = ''; let generation_started = new Date(); /** @type {import('scripts/char-data.js').v1CharData[]} */ @@ -5785,8 +5784,10 @@ async function getChatResult() { name2 = characters[this_chid].name; if (chat.length === 0) { const message = getFirstMessage(); - chat.push(message); - await saveChatConditional(); + if (message.mes) { + chat.push(message); + await saveChatConditional(); + } } await loadItemizedPrompts(getCurrentChatId()); await printMessages(); @@ -5802,7 +5803,7 @@ async function getChatResult() { } function getFirstMessage() { - const firstMes = characters[this_chid].first_mes || default_ch_mes; + const firstMes = characters[this_chid].first_mes || ''; const alternateGreetings = characters[this_chid]?.data?.alternate_greetings; const message = { @@ -5816,10 +5817,17 @@ function getFirstMessage() { if (Array.isArray(alternateGreetings) && alternateGreetings.length > 0) { const swipes = [message.mes, ...(alternateGreetings.map(greeting => getRegexedString(greeting, regex_placement.AI_OUTPUT)))]; + + if (!message.mes) { + swipes.shift(); + message.mes = swipes[0]; + } + message['swipe_id'] = 0; message['swipes'] = swipes; message['swipe_info'] = []; } + return message; } @@ -7400,8 +7408,8 @@ function openAlternateGreetings() { template.find('.add_alternate_greeting').on('click', function () { const array = getArray(); const index = array.length; - array.push(default_ch_mes); - addAlternateGreeting(template, default_ch_mes, index, getArray); + array.push(''); + addAlternateGreeting(template, '', index, getArray); updateAlternateGreetingsHintVisibility(template); }); @@ -7572,15 +7580,20 @@ async function createOrEditCharacter(e) { eventSource.emit(event_types.CHARACTER_EDITED, { detail: { id: this_chid, character: characters[this_chid] } }); // Recreate the chat if it hasn't been used at least once (i.e. with continue). - if (chat.length === 1 && !selected_group && !chat_metadata['tainted']) { - const firstMessage = getFirstMessage(); - chat[0] = firstMessage; + const message = getFirstMessage(); + const shouldRegenerateMessage = + message.mes && + !selected_group && + !chat_metadata['tainted'] && + (chat.length === 0 || (chat.length === 1 && !chat[0].is_user && !chat[0].is_system)); - const chat_id = (chat.length - 1); - await eventSource.emit(event_types.MESSAGE_RECEIVED, chat_id); + if (shouldRegenerateMessage) { + chat.splice(0, chat.length, message); + const messageId = (chat.length - 1); + await eventSource.emit(event_types.MESSAGE_RECEIVED, messageId); await clearChat(); await printMessages(); - await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, chat_id); + await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, messageId); await saveChatConditional(); } }, diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js index 1fb95b736..ae0487f59 100644 --- a/public/scripts/group-chats.js +++ b/public/scripts/group-chats.js @@ -40,7 +40,6 @@ import { online_status, talkativeness_default, selectRightMenuWithAnimation, - default_ch_mes, deleteLastMessage, showSwipeButtons, hideSwipeButtons, @@ -204,6 +203,12 @@ export async function getGroupChat(groupId, reload = false) { } const mes = await getFirstCharacterMessage(character); + + // No first message + if (!(mes?.mes)) { + continue; + } + chat.push(mes); await eventSource.emit(event_types.MESSAGE_RECEIVED, (chat.length - 1)); addOneMessage(mes); @@ -452,7 +457,7 @@ async function getFirstCharacterMessage(character) { mes['extra'] = { 'gen_id': Date.now() * Math.random() * 1000000 }; mes['mes'] = messageText ? substituteParams(messageText.trim(), name1, character.name) - : default_ch_mes; + : ''; mes['force_avatar'] = character.avatar != 'none' ? getThumbnailUrl('avatar', character.avatar)