A SillyTavern extension for group chats. It adds a button next to the message box (to the right of the Emoji Picker's button, if installed) that pops up a picker of every character in the current group. Click a character to force them to respond next, instead of waiting for the group's normal activation strategy to pick someone. The button is hidden entirely outside of group chats, and also hides while a response is currently generating.
Settings live under Extensions → Group Responder Selector in the Extensions panel.
- Hide Muted (default: off) — when enabled, group members who are currently muted/disabled are left out of the picker entirely, instead of being shown in the list.
- Dim Avatar Images (default: on) — when enabled, every entry in the picker is shown at half opacity; turn it off for full-brightness avatars/rows.
- Display Mode (default: Small) — controls how the picker is laid out:
-
Clone this repository:
git clone <this-repo-url> STGroupResponderSelector cd STGroupResponderSelector
-
Copy it into your SillyTavern install using the included script, passing the path to your SillyTavern root (the folder that contains
public/):./install.sh /path/to/SillyTavern
This copies
manifest.json,index.js,style.css, andsettings.htmlinto:/path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector/To update after pulling changes, just re-run the same command — it overwrites the installed copy.
Without the script: create the destination folder yourself and copy the same four files into it:
mkdir -p /path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector cp manifest.json index.js style.css settings.html \ /path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector/
No server restart is required, either for the initial install or for picking up updates — SillyTavern discovers extensions live on every page load. Just reload the SillyTavern tab in your browser.
If you re-installed an update and don't see the change take effect, do a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows/Linux) to bypass the browser's cache of the extension's JS file.
Other extensions can ask the user "which group member should respond next?" without triggering a generation themselves. The API follows SillyTavern's cross-extension convention (globalThis.<ExtensionName>, the same pattern used by globalThis.quickReplyApi):
const grs = globalThis.STGroupResponderSelector;
if (grs?.pickCharacter) {
const picked = await grs.pickCharacter();
if (picked) {
// picked.chid — character id (index into SillyTavern's `characters` array)
// picked.name — character display name
// ...do whatever you want with it; no generation has been fired...
} else {
// user dismissed the menu without picking
}
}The selector opens exactly as it does when the user clicks the toolbar button (same look, same display-mode setting), but clicking a member resolves the promise instead of calling Generate. Closing the menu without a pick (outside click, Esc, or empty group) resolves with null. Consumers should always feature-detect — pickCharacter only exists from version 0.2.0 onward.




