
KeylessUniversal

--[[
🎤 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
}No comments yet for this script.

![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)

