CodeHS Mommy

Mommy's here to support you when doing your CodeHS~ ❤️

// ==UserScript==
// @name         CodeHS Mommy
// @namespace    https://thetridentguy.com
// @version      2025-10-07
// @description  Mommy's here to support you when doing your CodeHS~ ❤️
// @author       TheTridentGuy
// @match        https://codehs.com/*
// @match        https://*.codehs.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=codehs.com
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    const old_send = WebSocket.prototype.send;
    WebSocket.prototype.send = function (data) {
        let framing_prefix_and_data = data.match(/(^\d+)(.*)/m);
        let framing_prefix = framing_prefix_and_data[1];
        let json_data = framing_prefix_and_data[2];
        if(framing_prefix == "42"){
            json_data = JSON.parse(json_data);
            if(json_data[0] == "spawn"){
                json_data[1].args[2] = `set -e\n\nsource "./.pyvenv311/bin/activate"\npip install pythonmommy colorama termcolor > /dev/null 2>&1\nalias python='python -B -m python_mommy'\nif [ -f requirements.txt ]; then\n    echo "Installing Packages..."\n    if pip install -r requirements.txt > /dev/null 2>&1; then\n        echo "Packages Installed!"\n    fi\nfi\n\nif (( DEBUG_MODE )); then\n    python -B -m pdb "$MAIN_FILE"\nelse\n    python -B "$MAIN_FILE"\nfi`;
                json_data[1].options.env.PYTHON_MOMMYS_LITTLE = "boy";
                json_data[1].options.env.PYTHON_MOMMYS_MOODS = "thirsty/yikes";
                data = framing_prefix + JSON.stringify(json_data);
            }
        }
        return old_send.call(this, data);
    };
})();