Update existing slash commands to findChar

- Update /gen to utilize new char find functionality
- Update /go to utilize new char find functionality
- Update /delname to utilize new char find functionality
- Change /send persona search to equalsIgnoreCaseAndAccents
This commit is contained in:
Wolfsblvt 2024-09-29 02:36:33 +02:00
parent d6e52dbb97
commit 145023ba8d

View File

@ -461,12 +461,14 @@ export function initDefaultSlashCommands() {
SlashCommandParser.addCommandObject(SlashCommand.fromProps({ SlashCommandParser.addCommandObject(SlashCommand.fromProps({
name: 'go', name: 'go',
callback: goToCharacterCallback, callback: goToCharacterCallback,
returns: 'The character/group name',
unnamedArgumentList: [ unnamedArgumentList: [
SlashCommandArgument.fromProps({ SlashCommandArgument.fromProps({
description: 'name', description: 'Character name - or unique character identifier (avatar key)',
typeList: [ARGUMENT_TYPE.STRING], typeList: [ARGUMENT_TYPE.STRING],
isRequired: true, isRequired: true,
enumProvider: commonEnumProviders.characters('all'), enumProvider: commonEnumProviders.characters('all'),
forceEnum: true,
}), }),
], ],
helpString: 'Opens up a chat with the character or group by its name', helpString: 'Opens up a chat with the character or group by its name',
@ -531,7 +533,7 @@ export function initDefaultSlashCommands() {
namedArgumentList: [], namedArgumentList: [],
unnamedArgumentList: [ unnamedArgumentList: [
SlashCommandArgument.fromProps({ SlashCommandArgument.fromProps({
description: 'name', description: 'Character name - or unique character identifier (avatar key)',
typeList: [ARGUMENT_TYPE.STRING], typeList: [ARGUMENT_TYPE.STRING],
isRequired: true, isRequired: true,
enumProvider: commonEnumProviders.characters('character'), enumProvider: commonEnumProviders.characters('character'),
@ -936,7 +938,7 @@ export function initDefaultSlashCommands() {
), ),
SlashCommandNamedArgument.fromProps({ SlashCommandNamedArgument.fromProps({
name: 'name', name: 'name',
description: 'in-prompt name for instruct mode', description: 'in-prompt character name for instruct mode (or unique character identifier (avatar key), which will be used as name)',
typeList: [ARGUMENT_TYPE.STRING], typeList: [ARGUMENT_TYPE.STRING],
defaultValue: 'System', defaultValue: 'System',
enumProvider: () => [...commonEnumProviders.characters('character')(), new SlashCommandEnumValue('System', null, enumTypes.enum, enumIcons.assistant)], enumProvider: () => [...commonEnumProviders.characters('character')(), new SlashCommandEnumValue('System', null, enumTypes.enum, enumIcons.assistant)],
@ -2373,7 +2375,8 @@ async function generateCallback(args, value) {
setEphemeralStopStrings(resolveVariable(args?.stop)); setEphemeralStopStrings(resolveVariable(args?.stop));
const name = args?.name; const name = args?.name;
const result = await generateQuietPrompt(value, quietToLoud, false, '', name, length); const char = findChar({ name: name });
const result = await generateQuietPrompt(value, quietToLoud, false, '', char?.name ?? name, length);
return result; return result;
} catch (err) { } catch (err) {
console.error('Error on /gen generation', err); console.error('Error on /gen generation', err);
@ -2895,7 +2898,7 @@ function findPersonaByName(name) {
} }
for (const persona of Object.entries(power_user.personas)) { for (const persona of Object.entries(power_user.personas)) {
if (persona[1].toLowerCase() === name.toLowerCase()) { if (equalsIgnoreCaseAndAccents(persona[1], name)) {
return persona[0]; return persona[0];
} }
} }
@ -2938,7 +2941,9 @@ async function deleteMessagesByNameCallback(_, name) {
return; return;
} }
name = name.trim(); // Search for a matching character to get the real name, or take the name provided
const character = findChar({ name: name });
name = character?.name || name;
const messagesToDelete = []; const messagesToDelete = [];
chat.forEach((value) => { chat.forEach((value) => {
@ -2996,31 +3001,28 @@ async function goToCharacterCallback(_, name) {
return; return;
} }
name = name.trim(); const character = findChar({ name: name });
const characterIndex = findCharacterIndex(name); if (character) {
const chid = getCharIndex(character);
if (characterIndex !== -1) { await openChat(new String(chid));
await openChat(new String(characterIndex)); setActiveCharacter(character.avatar);
setActiveCharacter(characters[characterIndex]?.avatar);
setActiveGroup(null); setActiveGroup(null);
return characters[characterIndex]?.name; return character.name;
} else {
const group = groups.find(it => it.name.toLowerCase() == name.toLowerCase());
if (group) {
await openGroupById(group.id);
setActiveCharacter(null);
setActiveGroup(group.id);
return group.name;
} else {
console.warn(`No matches found for name "${name}"`);
return '';
}
} }
const group = groups.find(it => equalsIgnoreCaseAndAccents(it.name, name));
if (group) {
await openGroupById(group.id);
setActiveCharacter(null);
setActiveGroup(group.id);
return group.name;
}
console.warn(`No matches found for name "${name}"`);
return '';
} }
async function openChat(id) { async function openChat(chid) {
resetSelectedGroup(); resetSelectedGroup();
setCharacterId(id); setCharacterId(chid);
await delay(1); await delay(1);
await reloadCurrentChat(); await reloadCurrentChat();
} }