mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-02-23 07:27:41 +01:00
parent
8811010c73
commit
e960ae64c5
@ -930,7 +930,12 @@ function registerWorldInfoSlashCommands() {
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getChatBookCallback() {
|
/**
|
||||||
|
* Gets the name of the chat-bound lorebook. Creates a new one if it doesn't exist.
|
||||||
|
* @param {import('./slash-commands/SlashCommandParser.js').NamedArguments} args Named arguments
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
async function getChatBookCallback(args) {
|
||||||
const chatId = getCurrentChatId();
|
const chatId = getCurrentChatId();
|
||||||
|
|
||||||
if (!chatId) {
|
if (!chatId) {
|
||||||
@ -942,8 +947,19 @@ function registerWorldInfoSlashCommands() {
|
|||||||
return chat_metadata[METADATA_KEY];
|
return chat_metadata[METADATA_KEY];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace non-alphanumeric characters with underscores, cut to 64 characters
|
const name = (() => {
|
||||||
const name = `Chat Book ${getCurrentChatId()}`.replace(/[^a-z0-9]/gi, '_').replace(/_{2,}/g, '_').substring(0, 64);
|
// Use the provided name if it's not in use
|
||||||
|
if (typeof args.name === 'string') {
|
||||||
|
const name = String(args.name);
|
||||||
|
if (world_names.includes(name)) {
|
||||||
|
throw new Error('This World Info file name is already in use');
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace non-alphanumeric characters with underscores, cut to 64 characters
|
||||||
|
return `Chat Book ${getCurrentChatId()}`.replace(/[^a-z0-9]/gi, '_').replace(/_{2,}/g, '_').substring(0, 64);
|
||||||
|
})();
|
||||||
await createNewWorldInfo(name);
|
await createNewWorldInfo(name);
|
||||||
|
|
||||||
chat_metadata[METADATA_KEY] = name;
|
chat_metadata[METADATA_KEY] = name;
|
||||||
@ -1289,6 +1305,15 @@ function registerWorldInfoSlashCommands() {
|
|||||||
callback: getChatBookCallback,
|
callback: getChatBookCallback,
|
||||||
returns: 'lorebook name',
|
returns: 'lorebook name',
|
||||||
helpString: 'Get a name of the chat-bound lorebook or create a new one if was unbound, and pass it down the pipe.',
|
helpString: 'Get a name of the chat-bound lorebook or create a new one if was unbound, and pass it down the pipe.',
|
||||||
|
namedArgumentList: [
|
||||||
|
SlashCommandNamedArgument.fromProps({
|
||||||
|
name: 'name',
|
||||||
|
description: 'lorebook name if creating a new one, will be auto-generated otherwise',
|
||||||
|
typeList: [ARGUMENT_TYPE.STRING],
|
||||||
|
isRequired: false,
|
||||||
|
acceptsMultiple: false,
|
||||||
|
}),
|
||||||
|
],
|
||||||
aliases: ['getchatlore', 'getchatwi'],
|
aliases: ['getchatlore', 'getchatwi'],
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user