mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add name argument for /send.
Tech debt: move to new STscript branch
This commit is contained in:
@ -4410,14 +4410,16 @@ export function removeMacros(str) {
|
|||||||
* @param {string} messageText Message text.
|
* @param {string} messageText Message text.
|
||||||
* @param {string} messageBias Message bias.
|
* @param {string} messageBias Message bias.
|
||||||
* @param {number} [insertAt] Optional index to insert the message at.
|
* @param {number} [insertAt] Optional index to insert the message at.
|
||||||
* @params {boolean} [compact] Send as a compact display message.
|
* @param {boolean} [compact] Send as a compact display message.
|
||||||
|
* @param {string} [name] Name of the user sending the message. Defaults to name1.
|
||||||
|
* @param {string} [avatar] Avatar of the user sending the message. Defaults to user_avatar.
|
||||||
* @returns {Promise<void>} A promise that resolves when the message is inserted.
|
* @returns {Promise<void>} A promise that resolves when the message is inserted.
|
||||||
*/
|
*/
|
||||||
export async function sendMessageAsUser(messageText, messageBias, insertAt = null, compact = false) {
|
export async function sendMessageAsUser(messageText, messageBias, insertAt = null, compact = false, name = name1, avatar = user_avatar) {
|
||||||
messageText = getRegexedString(messageText, regex_placement.USER_INPUT);
|
messageText = getRegexedString(messageText, regex_placement.USER_INPUT);
|
||||||
|
|
||||||
const message = {
|
const message = {
|
||||||
name: name1,
|
name: name,
|
||||||
is_user: true,
|
is_user: true,
|
||||||
is_system: false,
|
is_system: false,
|
||||||
send_date: getMessageTimeStamp(),
|
send_date: getMessageTimeStamp(),
|
||||||
@ -4432,8 +4434,8 @@ export async function sendMessageAsUser(messageText, messageBias, insertAt = nul
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lock user avatar to a persona.
|
// Lock user avatar to a persona.
|
||||||
if (user_avatar in power_user.personas) {
|
if (avatar in power_user.personas) {
|
||||||
message.force_avatar = getUserAvatar(user_avatar);
|
message.force_avatar = getUserAvatar(avatar);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (messageBias) {
|
if (messageBias) {
|
||||||
|
@ -43,7 +43,7 @@ import { getContext, saveMetadataDebounced } from './extensions.js';
|
|||||||
import { getRegexedString, regex_placement } from './extensions/regex/engine.js';
|
import { getRegexedString, regex_placement } from './extensions/regex/engine.js';
|
||||||
import { findGroupMemberId, groups, is_group_generating, openGroupById, resetSelectedGroup, saveGroupChat, selected_group } from './group-chats.js';
|
import { findGroupMemberId, groups, is_group_generating, openGroupById, resetSelectedGroup, saveGroupChat, selected_group } from './group-chats.js';
|
||||||
import { chat_completion_sources, oai_settings } from './openai.js';
|
import { chat_completion_sources, oai_settings } from './openai.js';
|
||||||
import { autoSelectPersona, retriggerFirstMessageOnEmptyChat } from './personas.js';
|
import { autoSelectPersona, retriggerFirstMessageOnEmptyChat, user_avatar } from './personas.js';
|
||||||
import { addEphemeralStoppingString, chat_styles, flushEphemeralStoppingStrings, power_user } from './power-user.js';
|
import { addEphemeralStoppingString, chat_styles, flushEphemeralStoppingStrings, power_user } from './power-user.js';
|
||||||
import { textgen_types, textgenerationwebui_settings } from './textgen-settings.js';
|
import { textgen_types, textgenerationwebui_settings } from './textgen-settings.js';
|
||||||
import { decodeTextTokens, getFriendlyTokenizerName, getTextTokens, getTokenCountAsync } from './tokenizers.js';
|
import { decodeTextTokens, getFriendlyTokenizerName, getTextTokens, getTokenCountAsync } from './tokenizers.js';
|
||||||
@ -1196,6 +1196,23 @@ async function triggerGenerationCallback(args, value) {
|
|||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Find persona by name.
|
||||||
|
* @param {string} name Name to search for
|
||||||
|
* @returns {string} Persona name
|
||||||
|
*/
|
||||||
|
function findPersonaByName(name) {
|
||||||
|
if (!name) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const persona of Object.entries(power_user.personas)) {
|
||||||
|
if (persona[1].toLowerCase() === name.toLowerCase()) {
|
||||||
|
return persona[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
async function sendUserMessageCallback(args, text) {
|
async function sendUserMessageCallback(args, text) {
|
||||||
if (!text) {
|
if (!text) {
|
||||||
@ -1207,7 +1224,16 @@ async function sendUserMessageCallback(args, text) {
|
|||||||
const compact = isTrueBoolean(args?.compact);
|
const compact = isTrueBoolean(args?.compact);
|
||||||
const bias = extractMessageBias(text);
|
const bias = extractMessageBias(text);
|
||||||
const insertAt = Number(resolveVariable(args?.at));
|
const insertAt = Number(resolveVariable(args?.at));
|
||||||
await sendMessageAsUser(text, bias, insertAt, compact);
|
|
||||||
|
if ('name' in args) {
|
||||||
|
const name = resolveVariable(args.name) || '';
|
||||||
|
const avatar = findPersonaByName(name) || user_avatar;
|
||||||
|
await sendMessageAsUser(text, bias, insertAt, compact, name, avatar);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await sendMessageAsUser(text, bias, insertAt, compact);
|
||||||
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user