Manual AI Chat Module
Key RequiredUniversal

Manual AI Chat Module

Universal Scriptfennexfennex 3.7K views 169 executesUpdated Jan 23, 2025
Unrated
00
Lua Script•182 lines (5519 chars)
--[[
    🎤 ChatSinger: Your Friendly Neighborhood Singing Buddy! 🎶

    Transform boring chat into a musical adventure! 
    This module brings personality, fun, and spontaneity to your Roblox singing experience.
]]

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer or Players:GetPlayerFromCharacter(script.Parent)

-- 🌈 Mood and Personality System
local MoodTypes = {
    EXCITED = {
        emotes = {"😄", "🎉", "🤩"},
        energyLevel = 1.2
    },
    CHILL = {
        emotes = {"😎", "🕶️", "✌️"},
        energyLevel = 0.8
    },
    DRAMATIC = {
        emotes = {"🎭", "💖", "✨"},
        energyLevel = 1.0
    }
}

-- 🎵 The Singing Personality
local ChatSinger = {
    _version = "1.2.0",
    _mood = "EXCITED",
    _personalityTraits = {
        randomness = 0.7,
        chattiness = 0.6,
        musicality = 0.8
    }
}

-- 🧠 Personal Touch: Dynamic Mood Management
function ChatSinger:SetMood(newMood)
    if MoodTypes[newMood] then
        self._mood = newMood
        print("🌈 Mood changed to: " .. newMood)
    else
        warn("⚠️ Mood not recognized. Staying " .. self._mood)
    end
end

-- 🎤 Enhanced Singing Mechanism
function ChatSinger:Sing(songLyrics, options)
    -- Default configuration with personality
    local config = {
        useEmotes = true,
        randomDelay = true,
        personalitySpice = true
    }
    
    -- Merge user options
    if options then
        for k, v in pairs(options) do
            config[k] = v
        end
    end
    
    -- Get current mood details
    local currentMoodData = MoodTypes[self._mood]
    
    -- Sing with personality!
    coroutine.wrap(function()
        for i, line in ipairs(songLyrics) do
            -- Add some personality spice
            local emote = config.useEmotes and 
                (currentMoodData.emotes[math.random(#currentMoodData.emotes)] or "") 
                or ""
            
            -- Dynamic delay with personality randomness
            local baseDelay = config.randomDelay and 
                math.random(2, 5) * currentMoodData.energyLevel or 2
            
            -- Optional personality commentary
            if config.personalitySpice and math.random() < self._personalityTraits.chattiness then
                local personalComments = {
                    "Ooh, feeling this line! 🎶",
                    "Check out these lyrics! 🌟",
                    "Who's jamming? I AM! 💃"
                }
                local comment = personalComments[math.random(#personalComments)]
                game.ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(comment, "All")
            end
            
            -- Sing the line with flair
            game.ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(
                line .. " " .. emote, 
                "All"
            )
            
            -- Wait with some personality randomness
            wait(baseDelay)
        end
    end)()
end

-- 🎼 Preset Song Collection
local SongPresets = {
    {
        name = "Friendship Anthem",
        lyrics = {
            "We're friends forever, can't you see?",
            "This Roblox world is our melody!",
            "Singing together, wild and free!"
        }
    },
    {
        name = "Gamer's Ballad",
        lyrics = {
            "From noob to pro, we'll rise today!",
            "Our skills are sharp, we're here to play!",
            "In this game, we'll find our way!"
        }
    }
}

-- 🎲 Random Song Generator
function ChatSinger:GenerateRandomSong(length)
    length = length or math.random(3, 6)
    local randomLyrics = {}
    
    local lyricTemplates = {
        "In a world of {thing}, we {action}!",
        "Dreaming of {thing}, feeling so {emotion}!",
        "{Place} is calling, can you hear me now?"
    }
    
    local things = {"Roblox", "adventure", "coding", "gaming", "friendship"}
    local actions = {"shine bright", "break free", "explore", "conquer"}
    local emotions = {"alive", "excited", "powerful", "unstoppable"}
    local places = {"This server", "Our world", "The game"}
    
    for i = 1, length do
        local template = lyricTemplates[math.random(#lyricTemplates)]
        local line = template:gsub("{thing}", things[math.random(#things)])
                              :gsub("{action}", actions[math.random(#actions)])
                              :gsub("{emotion}", emotions[math.random(#emotions)])
                              :gsub("{Place}", places[math.random(#places)])
        table.insert(randomLyrics, line)
    end
    
    return randomLyrics
end

-- 🔍 Song Discovery
function ChatSinger:FindSong(name)
    for _, song in ipairs(SongPresets) do
        if song.name:lower() == name:lower() then
            return song.lyrics
        end
    end
    return nil
end

-- 🎉 Public Interface
return {
    Sing = function(lyrics, options)
        if type(lyrics) == "string" then
            -- If a preset song name is given
            lyrics = ChatSinger:FindSong(lyrics)
        end
        
        if not lyrics then
            -- Generate random lyrics if no lyrics provided
            lyrics = ChatSinger:GenerateRandomSong()
        end
        
        ChatSinger:Sing(lyrics, options)
    end,
    SetMood = function(mood)
        ChatSinger:SetMood(mood)
    end,
    GenerateRandomSong = function(length)
        return ChatSinger:GenerateRandomSong(length)
    end,
    Presets = SongPresets
}

Features & Information

THIS SCRIPT IS A MODULE! This can be used for AI Scripts!
#Ai#Chat

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts