mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Slash command to delete messages by name
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
||||
replaceCurrentChat,
|
||||
setCharacterId,
|
||||
generateQuietPrompt,
|
||||
reloadCurrentChat,
|
||||
} from "../script.js";
|
||||
import { humanizedDateTime } from "./RossAscends-mods.js";
|
||||
import { resetSelectedGroup } from "./group-chats.js";
|
||||
@@ -125,11 +126,46 @@ parser.addCommand('flat', setFlatModeCallback, ['default'], ' – sets the messa
|
||||
parser.addCommand('continue', continueChatCallback, ['cont'], ' – continues the last message in the chat', true, true);
|
||||
parser.addCommand('go', goToCharacterCallback, ['char'], '<span class="monospace">(name)</span> – opens up a chat with the character by its name', true, true);
|
||||
parser.addCommand('sysgen', generateSystemMessage, [], '<span class="monospace">(prompt)</span> – generates a system message using a specified prompt', true, true);
|
||||
parser.addCommand('delname', deleteMessagesByNameCallback, ['cancel'], '<span class="monospace">(name)</span> – deletes all messages attributed to a specified name', true, true);
|
||||
|
||||
const NARRATOR_NAME_KEY = 'narrator_name';
|
||||
const NARRATOR_NAME_DEFAULT = 'System';
|
||||
const COMMENT_NAME_DEFAULT = 'Note';
|
||||
|
||||
async function deleteMessagesByNameCallback(_, name) {
|
||||
if (!name) {
|
||||
console.warn('WARN: No name provided for /delname command');
|
||||
return;
|
||||
}
|
||||
|
||||
name = name.trim();
|
||||
|
||||
const messagesToDelete = [];
|
||||
chat.forEach((value) => {
|
||||
if (value.name === name) {
|
||||
messagesToDelete.push(value);
|
||||
}
|
||||
});
|
||||
|
||||
if (!messagesToDelete.length) {
|
||||
console.debug('/delname: Nothing to delete');
|
||||
return;
|
||||
}
|
||||
|
||||
for (const message of messagesToDelete) {
|
||||
const index = chat.indexOf(message);
|
||||
if (index !== -1) {
|
||||
console.debug(`/delname: Deleting message #${index}`, message);
|
||||
chat.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
await saveChatConditional();
|
||||
await reloadCurrentChat();
|
||||
|
||||
toastr.info(`Deleted ${messagesToDelete.length} messages from ${name}`);
|
||||
}
|
||||
|
||||
function findCharacterIndex(name) {
|
||||
const matchTypes = [
|
||||
(a, b) => a === b,
|
||||
|
Reference in New Issue
Block a user