mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Add help strings for slash commands
This commit is contained in:
		| @@ -91,7 +91,7 @@ import { | |||||||
|  |  | ||||||
| import { debounce, delay } from "./scripts/utils.js"; | import { debounce, delay } from "./scripts/utils.js"; | ||||||
| import { extension_settings, loadExtensionSettings } from "./scripts/extensions.js"; | import { extension_settings, loadExtensionSettings } from "./scripts/extensions.js"; | ||||||
| import { executeSlashCommands } from "./scripts/slash-commands.js"; | import { executeSlashCommands, getSlashCommandsHelp } from "./scripts/slash-commands.js"; | ||||||
|  |  | ||||||
| //exporting functions and vars for mods | //exporting functions and vars for mods | ||||||
| export { | export { | ||||||
| @@ -1067,6 +1067,10 @@ function sendSystemMessage(type, text) { | |||||||
|         newMessage.mes = text; |         newMessage.mes = text; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (type == system_message_types.HELP) { | ||||||
|  |         newMessage.mes += getSlashCommandsHelp(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if (!newMessage.extras) { |     if (!newMessage.extras) { | ||||||
|         newMessage.extras = {}; |         newMessage.extras = {}; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -5,11 +5,13 @@ import { | |||||||
| export { | export { | ||||||
|     executeSlashCommands, |     executeSlashCommands, | ||||||
|     registerSlashCommand, |     registerSlashCommand, | ||||||
|  |     getSlashCommandsHelp, | ||||||
| } | } | ||||||
|  |  | ||||||
| class SlashCommandParser { | class SlashCommandParser { | ||||||
|     constructor() { |     constructor() { | ||||||
|         this.commands = {}; |         this.commands = {}; | ||||||
|  |         this.helpStrings = []; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     addCommand(command, callback, aliases, helpString = '', interruptsGeneration = false, purgeFromMessage = true) { |     addCommand(command, callback, aliases, helpString = '', interruptsGeneration = false, purgeFromMessage = true) { | ||||||
| @@ -21,6 +23,13 @@ class SlashCommandParser { | |||||||
|                 this.commands[alias] = fnObj; |                 this.commands[alias] = fnObj; | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         let stringBuilder = `<span class="monospace">/${command}</span> ${helpString} `; | ||||||
|  |         if (Array.isArray(aliases) && aliases.length) { | ||||||
|  |             let aliasesString = `(aliases: ${aliases.map(x => `<span class="monospace">/${x}</span>`).join(', ')})`; | ||||||
|  |             stringBuilder += aliasesString; | ||||||
|  |         } | ||||||
|  |         this.helpStrings.push(stringBuilder); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     parse(text) { |     parse(text) { | ||||||
| @@ -53,13 +62,19 @@ class SlashCommandParser { | |||||||
|  |  | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     getHelpString() { | ||||||
|  |         const listItems = this.helpStrings.map(x => `<li>${x}</li>`).join('\n'); | ||||||
|  |         return `<p>Slash commands:</p><ol>${listItems}</ol>`; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| const parser = new SlashCommandParser(); | const parser = new SlashCommandParser(); | ||||||
| const registerSlashCommand = parser.addCommand.bind(parser); | const registerSlashCommand = parser.addCommand.bind(parser); | ||||||
|  | const getSlashCommandsHelp = parser.getHelpString.bind(parser); | ||||||
|  |  | ||||||
| parser.addCommand('help', helpCommandCallback, ['?'], 'Displays a help information', true, true); | parser.addCommand('help', helpCommandCallback, ['?'], ' – displays a help information', true, true); | ||||||
| parser.addCommand('bg', setBackgroundCallback, ['background'], 'Sets a background', false, true); | parser.addCommand('bg', setBackgroundCallback, ['background'], '<span class="monospace">name</span> – sets a background by file name', false, true); | ||||||
|  |  | ||||||
| function helpCommandCallback() { | function helpCommandCallback() { | ||||||
|     sendSystemMessage(system_message_types.HELP); |     sendSystemMessage(system_message_types.HELP); | ||||||
|   | |||||||
| @@ -2957,6 +2957,10 @@ label[for="extensions_autoconnect"] { | |||||||
|     color: lightgray; |     color: lightgray; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .monospace { | ||||||
|  |     font-family: monospace; | ||||||
|  | } | ||||||
|  |  | ||||||
| .expander { | .expander { | ||||||
|     flex-grow: 1; |     flex-grow: 1; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user