How to check when player starts emoting/stops emoting

I have a first person game, but want to make it so if you emote, you zoom out, and when you stop, you zoom back in, similar to SCP-3008. Does anyone know how to do this?

I think you can use the HumanoidDescription class and detect when the EmotesChanged event fires. For example:

local player = game.Players.LocalPlayer
local humanoid = player.Character:WaitForChild("Humanoid")

humanoid:GetPropertyChangedSignal("HumanoidDescription"):Connect(function()
    local emote = humanoid.HumanoidDescription.Emotes
        changeZoom(emote)
end)