I want to use UserInputService, but I need a way to detect if the player is interacting with Guis, including them typing in roblox's chat. I am extreamly stuck with this manner and I have no idea how to do this.
It mostly depends on what gui element your going to have them interact with. For a button of any type.
local guiElement = script.Parent --This assumes the gui element is the scripts parent guiElement.MouseButton1Click:Connect(function() --Do something end) --This is a local script
And if you wanted to see when a user sends a message in chat you would use:
game.Players.LocalPlayer.Chatted:Connect(function(chat) --Do something end) --This is also a local script
There isn't any event for when the player starts typing in chat though. So there isn't a 100% reliable way to see when a player is typing in chat without redoing the whole chat gui.
If this answer helped be sure to accept it so we both get some rep :)