mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	#2188 Make first message not required
This commit is contained in:
		| @@ -469,7 +469,6 @@ let settingsReady = false; | |||||||
| let currentVersion = '0.0.0'; | let currentVersion = '0.0.0'; | ||||||
| let displayVersion = 'SillyTavern'; | let displayVersion = 'SillyTavern'; | ||||||
|  |  | ||||||
| export const default_ch_mes = 'Hello'; |  | ||||||
| let generatedPromptCache = ''; | let generatedPromptCache = ''; | ||||||
| let generation_started = new Date(); | let generation_started = new Date(); | ||||||
| /** @type {import('scripts/char-data.js').v1CharData[]} */ | /** @type {import('scripts/char-data.js').v1CharData[]} */ | ||||||
| @@ -5785,8 +5784,10 @@ async function getChatResult() { | |||||||
|     name2 = characters[this_chid].name; |     name2 = characters[this_chid].name; | ||||||
|     if (chat.length === 0) { |     if (chat.length === 0) { | ||||||
|         const message = getFirstMessage(); |         const message = getFirstMessage(); | ||||||
|         chat.push(message); |         if (message.mes) { | ||||||
|         await saveChatConditional(); |             chat.push(message); | ||||||
|  |             await saveChatConditional(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|     await loadItemizedPrompts(getCurrentChatId()); |     await loadItemizedPrompts(getCurrentChatId()); | ||||||
|     await printMessages(); |     await printMessages(); | ||||||
| @@ -5802,7 +5803,7 @@ async function getChatResult() { | |||||||
| } | } | ||||||
|  |  | ||||||
| function getFirstMessage() { | 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 alternateGreetings = characters[this_chid]?.data?.alternate_greetings; | ||||||
|  |  | ||||||
|     const message = { |     const message = { | ||||||
| @@ -5816,10 +5817,17 @@ function getFirstMessage() { | |||||||
|  |  | ||||||
|     if (Array.isArray(alternateGreetings) && alternateGreetings.length > 0) { |     if (Array.isArray(alternateGreetings) && alternateGreetings.length > 0) { | ||||||
|         const swipes = [message.mes, ...(alternateGreetings.map(greeting => getRegexedString(greeting, regex_placement.AI_OUTPUT)))]; |         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['swipe_id'] = 0; | ||||||
|         message['swipes'] = swipes; |         message['swipes'] = swipes; | ||||||
|         message['swipe_info'] = []; |         message['swipe_info'] = []; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return message; |     return message; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -7400,8 +7408,8 @@ function openAlternateGreetings() { | |||||||
|     template.find('.add_alternate_greeting').on('click', function () { |     template.find('.add_alternate_greeting').on('click', function () { | ||||||
|         const array = getArray(); |         const array = getArray(); | ||||||
|         const index = array.length; |         const index = array.length; | ||||||
|         array.push(default_ch_mes); |         array.push(''); | ||||||
|         addAlternateGreeting(template, default_ch_mes, index, getArray); |         addAlternateGreeting(template, '', index, getArray); | ||||||
|         updateAlternateGreetingsHintVisibility(template); |         updateAlternateGreetingsHintVisibility(template); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
| @@ -7572,15 +7580,20 @@ async function createOrEditCharacter(e) { | |||||||
|                 eventSource.emit(event_types.CHARACTER_EDITED, { detail: { id: this_chid, character: characters[this_chid] } }); |                 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). |                 // 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 message = getFirstMessage(); | ||||||
|                     const firstMessage = getFirstMessage(); |                 const shouldRegenerateMessage = | ||||||
|                     chat[0] = firstMessage; |                     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); |                 if (shouldRegenerateMessage) { | ||||||
|                     await eventSource.emit(event_types.MESSAGE_RECEIVED, chat_id); |                     chat.splice(0, chat.length, message); | ||||||
|  |                     const messageId = (chat.length - 1); | ||||||
|  |                     await eventSource.emit(event_types.MESSAGE_RECEIVED, messageId); | ||||||
|                     await clearChat(); |                     await clearChat(); | ||||||
|                     await printMessages(); |                     await printMessages(); | ||||||
|                     await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, chat_id); |                     await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, messageId); | ||||||
|                     await saveChatConditional(); |                     await saveChatConditional(); | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|   | |||||||
| @@ -40,7 +40,6 @@ import { | |||||||
|     online_status, |     online_status, | ||||||
|     talkativeness_default, |     talkativeness_default, | ||||||
|     selectRightMenuWithAnimation, |     selectRightMenuWithAnimation, | ||||||
|     default_ch_mes, |  | ||||||
|     deleteLastMessage, |     deleteLastMessage, | ||||||
|     showSwipeButtons, |     showSwipeButtons, | ||||||
|     hideSwipeButtons, |     hideSwipeButtons, | ||||||
| @@ -204,6 +203,12 @@ export async function getGroupChat(groupId, reload = false) { | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 const mes = await getFirstCharacterMessage(character); |                 const mes = await getFirstCharacterMessage(character); | ||||||
|  |  | ||||||
|  |                 // No first message | ||||||
|  |                 if (!(mes?.mes)) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|                 chat.push(mes); |                 chat.push(mes); | ||||||
|                 await eventSource.emit(event_types.MESSAGE_RECEIVED, (chat.length - 1)); |                 await eventSource.emit(event_types.MESSAGE_RECEIVED, (chat.length - 1)); | ||||||
|                 addOneMessage(mes); |                 addOneMessage(mes); | ||||||
| @@ -452,7 +457,7 @@ async function getFirstCharacterMessage(character) { | |||||||
|     mes['extra'] = { 'gen_id': Date.now() * Math.random() * 1000000 }; |     mes['extra'] = { 'gen_id': Date.now() * Math.random() * 1000000 }; | ||||||
|     mes['mes'] = messageText |     mes['mes'] = messageText | ||||||
|         ? substituteParams(messageText.trim(), name1, character.name) |         ? substituteParams(messageText.trim(), name1, character.name) | ||||||
|         : default_ch_mes; |         : ''; | ||||||
|     mes['force_avatar'] = |     mes['force_avatar'] = | ||||||
|         character.avatar != 'none' |         character.avatar != 'none' | ||||||
|             ? getThumbnailUrl('avatar', character.avatar) |             ? getThumbnailUrl('avatar', character.avatar) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user