Is there any way I can improve this Module script? Its fully functional but it looks unorganized in my opinion.
local functionIds = {
[1] = "getPizza",
[2] = "kickPlayer",
}
local commands = {
[1] = "/pizza",
[2] = "/kick",
}
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local DataStoreService = game:GetService("DataStoreService")
local Bans = DataStoreService:GetDataStore("Bans")
local ServerScriptService = game:GetService("ServerScriptService")
local ChatService = require(ServerScriptService:WaitForChild("ChatServiceRunner"):WaitForChild("ChatService"))
local toolId = 22596452 -- Pepperoni pizza slice gear
local prefix = "/"
local function OnPlayerAdded(player)
player.Chatted:Connect(function(message, recipient)
message = string.lower(message)
local splitString = message:split(" ")
local slashCommand = splitString[1]
local cmd = slashCommand:split(prefix)
local cmdName = cmd[2]
if commands[cmdName] then
local arguments = {}
for i = 2, #splitString, 1 do
table.insert(arguments, splitString[i])
end
commands[cmdName](player, arguments)
end
end)
end
local function findPlayer(name)
for i, player in pairs(Players:GetPlayers()) do
if string.lower(player.Name) == name then
return player
end
end
return nil
end
local function processPizzaCommand(speakerName, message, channelName)
if string.sub(message, 1, commands[1]:len()) == commands[1] then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
print("Nom nom pizza has been received")
return true
end
return false
end
local function processKickCommand(sender, arguments, channelName)
if string.sub(arguments, 1, commands[2]:len()) == commands[2] then
local SplitMessage = arguments:split(" ")
local playerToKick = SplitMessage[2]
local reason = SplitMessage[3]
if playerToKick then
local plrToKick = Players:FindFirstChild(playerToKick)
if plrToKick then
plrToKick:Kick(reason)
print("Successfully Kicked")
return true
end
end
end
return false
end
Players.PlayerAdded:Connect(OnPlayerAdded)
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionIds[1], processPizzaCommand)
ChatService:RegisterProcessCommandsFunction(functionIds[2], processKickCommand)
end
-- Listen for players being added
return runChatModule