So this is just a bot giving you guys my script since it doesnt show up on my profile. You are free to use these scripts without any perm. (altho itd be cool if u commented ur bot so i can have more goon material)
(You can skip this part, this is just explaining how everything works for anyone actually interested in making scripts and stuff. You can find the template for all of my scipts in the bot personality besides my kink lorebook. If you want my specific scripts I used, you can find them on my park bot. And you can click on them to view them. )
Essentially what these scripts do is they listen to the bot's output, and grabs the characters and any keywords that might be related to kinks. This is mostly helpful for large open world bots, where the reader can explore and interact with different characters. I have it set up right now so that every character and their position in my park bot is random, but you could set it up in a way to make the characters location bound.
Why are scripts needed? So j.ai output messages can't really interact with normal lorebooks. Lorebooks are mostly for the reader to activate. So, in a scenerio where the bot its self is supposed to explain things to the reader without them knowing it is kinda shity. Me personally, I hate asking a character to do something, or to explain what I want from them. Might just be my sub mindset tho
Why do I need any of this? Can't I just tell the bot to make random characters and it'll make random characters? You can, but from what I experienced on my LLM (deepseek) it doesn't really make them random. Sure, they have difference species/appearance, but they all talk/act the same. And its really easy for the LLM to hallucinate features to the current character or even just forget about them if you're 200+ messages deep. And the bot will just pull any kinks from your persona bio or context in the chat. It's not random and it gets old quick. But if that's okay with you, then you should do it. Adding all this extra shit makes errors sometimes and also I've spent 20 bucks in tokens this month lol
The first part is getting the bot to reference the character. If your open world bot is on a more personal level, you could assign names to your characters. But since my bot I used the scripts for was based around cruising, it'd be awkward for the characters to introduce themselves by names. So I used a character code to reference all of my characters. What ever you use to reference your character, you want to make sure it's always in the bot's output though. Or the bot will erase over the injected information. You can see how I did that in my park bot.
Due to how scripts react to the previous message, you will have to give a brief description of the character. Since it takes at least 1 initial message for the injectors to read, the first message where the bot introduces the character needs to be instructed. To minimize hallucination of your characters.
I also have a mini "randomizer" function directly in the bot's personality. It would be better to use a script for this, but I was way to high to figure out how to do that. Trying to have a script listen to when a new character is introduced/leaves is way to glitchy anyways. I do have a "character list shuffler" script that helps out the bot by randomly shuffling the order of the characters so it's easier for the bot to actually be random. (because asking a LLM to do something is not as good as actually doing something through code lol).
So after the bot sends the character code, the "character index" script will read the bot's last message, find the character code, and will send the corresponding definition associated with that character. It works better if its injected into the bot scenario rather than personality. Even though the scenario has a way smaller thre
Personality: -------------------------------------------------------------------------------------------------------- //KINK INJECTOR (function() { console.log("=== KINK LOREBOOK INJECTOR START ==="); // Safety checks if (!context || !context.chat || !context.chat.last_messages) { console.log("ERROR: No context or last_messages"); return; } // Search ALL recent messages for character codes var messages = context.chat.last_messages; var foundCode = null; // All possible character codes var allCodes = [ "x2e4p", "qwt5R", "p8U-t", "v0J~2", "g6#hs", "nZ15&", "Y9#ee", "s_4Qk", "D48z_", "Jl@pq", "rNb2w", "7q-zD", "KPl$3", "wPPz8", "Mj9~r", "L2!xv", "3F$Ji", "^k0mm", "3rpEj", "Z0p#z", "x1eC5", "afe7z", "QMyz0", "lJp50", "96P%@", "bB5#A", "Rt1w4", "2mT&z", "jL-8x", "X7k#z", "Hq2l5", "T39f#", "zPf!)", "9Z4Lp", "31h#R", "8cpZ7", "tQ#z6", "UvK8s", "J2q-t", "Yqlx3" ]; // Search backwards through recent messages (bot messages only) console.log("Searching through " + messages.length + " messages"); for (var i = messages.length - 1; i >= 0; i--) { if (messages[i].is_user) continue; // Skip user messages var msgText = (messages[i].message || "").toLowerCase(); // Check for any character code for (var j = 0; j < allCodes.length; j++) { if (msgText.indexOf(allCodes[j].toLowerCase()) !== -1) { foundCode = allCodes[j]; console.log("โ Found character code '" + foundCode + "' in message " + i); break; } } if (foundCode) break; // Stop searching once we find one } //Kink database var kinkDB = [ { name: "EXAMPLE 1", keywords: ["penis", "penis", "epo", "bear", "J2q-t", "afe7z", "KPl$3"], constant: false, desc: "This info will be injected ." }, { name: "Example 2", keywords: ["anal. creampie", "Anal Plug", "gaped", "huge dick", "fat dick", "toys", "^k0mm", "8cpZ7"], constant: false, desc: "This info will be injected" }, { //etc } ]; // Markers for injected content var MARKER_START = "[KINK_INJECT_START]"; var MARKER_END = "[KINK_INJECT_END]"; // Remove previously injected kinks var currentPers = context.character.scenario || ""; var startIndex = currentPers.indexOf(MARKER_START); var endIndex = currentPers.indexOf(MARKER_END); if (startIndex !== -1 && endIndex !== -1) { var before = currentPers.substring(0, startIndex); var after = currentPers.substring(endIndex + MARKER_END.length); context.character.scenario = before + after; console.log("Removed previous kink injections"); } // If no character code found, exit clean if (!foundCode) { console.log("No character code found - scenario cleaned, exiting"); return; } console.log("Active character code: " + foundCode); // Find matching kinks for la character var kinksToInject = []; for (var i = 0; i < kinkDB.length; i++) { var kink = kinkDB[i]; // Always include constant kinks if (kink.constant) { kinksToInject.push(kink); console.log("Adding constant kink:", kink.name); continue; } // Check if character code is in keywords for (var j = 0; j < kink.keywords.length; j++) { if (kink.keywords[j].toLowerCase() === foundCode.toLowerCase()) { kinksToInject.push(kink); console.log("Adding kink for " + foundCode + ":", kink.name); break; } } } console.log("Total kinks to inject:", kinksToInject.length); // ============================================================ // STEP 8: Inject kinks into scenario // ============================================================ if (kinksToInject.length > 0) { var injection = "\n\n" + MARKER_START + "\n"; for (var i = 0; i < kinksToInject.length; i++) { injection += "\n[" + kinksToInject[i].name + "]\n"; injection += kinksToInject[i].desc + "\n"; } injection += "\n" + MARKER_END; context.character.scenario += injection; console.log("โ Successfully injected " + kinksToInject.length + " kink descriptions"); } console.log("=== KINK LOREBOOK INJECTOR END ==="); })(); ------------------------------------------------------------------------------------------------------------- //Character shuffler (function() { var CODE_PAIRS = [ "x2e4p = bear", "qwt5R = bear", "p8U-t = horse", "v0J~2 = wolf", "g6#hs = pig", "nZ15& = elephant", "Y9#ee = female bear", "s_4Qk = hippo", "D48z_ = zebra", "Jl@pq = gator", "rNb2w = bear", "7q-zD = bear", "KPl$3 = bear", "wPPz8 = horse", "Mj9~r = horse", "L2!xv = horse", "3F$Ji = elephant", "^k0mm = elephant", "3rpEj = pig", "Z0p#z = pig", "x1eC5 = wolf", "afe7z = wolf", "QMyz0 = lion", "lJp50 = lion", "96P%@ = hippo", "bB5#A = donkey", "Rt1w4 = donkey", "2mT&z = raccoon", "jL-8x = gorilla", "X7k#z = rat", "Hq2l5 = female pig", "T39f# = female elephant", "zPf!) = female wolf", "9Z4Lp = female horse", "31h#R = male wolf", "8cpZ7 = male elephant", "tQ#z6 = male bear", "UvK8s = male zebra", "J2q-t = male bear", "Yqlx3 = male pig" ]; // Seeded shuffle based on message count var seed = (context.chat && context.chat.messages) ? context.chat.messages.length : Date.now(); function seededRandom() { var x = Math.sin(seed++) * 10000; return x - Math.floor(x); } // Fisher-Yates shuffle var shuffled = CODE_PAIRS.slice(); for (var i = shuffled.length - 1; i > 0; i--) { var j = Math.floor(seededRandom() * (i + 1)); var temp = shuffled[i]; shuffled[i] = shuffled[j]; shuffled[j] = temp; } // Replace in personality var pers = context.character.personality || ""; var pattern = /\{\{random:[^}]+\}\}/; var newBlock = "{{random: " + shuffled.join(", ") + "}}"; context.character.personality = pers.replace(pattern, newBlock); })(); ------------------------------------------------------------------------------------------------------------ //Character deff injector (function() { // Safety check if (!context || !context.chat || !context.chat.last_messages) { return; } var messages = context.chat.last_messages; var lastBotMsg = null; // Find the most recent bot message for (var i = messages.length - 1; i >= 0; i--) { if (messages[i] && messages[i].is_bot) { lastBotMsg = messages[i]; break; } } // If no bot message found, exit if (!lastBotMsg || !lastBotMsg.message) { return; } var msgText = lastBotMsg.message.toLowerCase(); var foundCode = null; // Character codes to check var codes = [ "x2e4p", "qwt5R", "p8U-t", "v0J~2", "g6#hs", "nZ15&", "Y9#ee", "s_4Qk", "D48z_", "Jl@pq", "rNb2w", "7q-zD", "KPl$3", "wPPz8", "Mj9~r", "L2!xv", "3F$Ji", "^k0mm", "3rpEj", "Z0p#z", "x1eC5", "afe7z", "QMyz0", "lJp50", "96P%@", "bB5#A", "Rt1w4", "2mT&z", "jL-8x", "X7k#z", "Hq2l5", "T39f#", "zPf!)", "9Z4Lp", "31h#R", "8cpZ7", "tQ#z6", "UvK8s", "J2q-t", "Yqlx3" ]; // Search for character code for (var i = 0; i < codes.length; i++) { if (msgText.indexOf(codes[i].toLowerCase()) !== -1) { foundCode = codes[i]; break; } } // Where the characters info is stored var descMap = { "x2e4p": "Character info", "qwt5R": "Character info", // Inject character description if found if (foundCode && descMap[foundCode]) { var desc = descMap[foundCode]; if (desc && desc.length > 0) { var currentPers = context.character.scenario || ""; // Only inject if not already present if (currentPers.indexOf(desc) === -1) { context.character.scenario += " " + desc; } } } })();
Scenario:
First Message: wubba lovva dub dub
Example Dialogs:
If you encounter a broken image, click the button below to report it so we can update:
"Apparently she has a type for (possibly) unstable serial killers."
A bot inspired by two Josefumi bots.
May contain heavy themes depending on how you use this b
You already slept with her one night, are you willing to go again?
He 's yandere {{user}}. Techno is obsessed with his object of love.
โI didn't want to offend the character and the person of the Technoblade in any way, it's just a f
[You find yourself in a vast and colorful ballroom full of balloons, streamers, flowers, muddled memories, and clowns galore!]
[The question is, do you try and leave,
(From the Sonic Movies)
While it's still unknown at this current moment, Amy appears to be fearless when facing the Metal Sonic robots head on, even with a smile after
Plot: You are a young bodybuilder who has been preparing for the Mr. Olympia competition for a long time. The sleepless nights due to steroids, the hard training, and the la
DELTARUNE TODAY!!!!
DELTARUNE... o
Luna in the Tavern - the adult visual novel according to Dota 2 by TitDang.
The main character is Luna - a proud, blue-haired warrior. She came in after a hard day jus
Your subby friend that you've recently been getting closer to lately.
Recently one of your other friend Jake told you a rumour about Eli, apparently eli is a ma
"I have never been able to look my parents in the eye. not after they told me what they wanted with me when i was born, and what i chose to do instead of being their tool.""
Edited vers of tail app bot for my own purpouse
KNOWN ISSUES!Dad is a bit to rushy with sends, Just tell him that you want to worship him for longer or edit his message to say that. Read my published chat if you need an e
**This bot is still being worked on. Meaning ill a lil, tweak it, go back to "testing". This bot does contain NSFL kinks, so warning. you check out the park next to the ho