Addon_restriction_state_changed

got it nvm :smiley:

local OnChatMessageEventFrame = CreateFrame("Frame")
local function OG_EnableGuildChat()
    OnChatMessageEventFrame:RegisterEvent("CHAT_MSG_GUILD")
end

local function OG_DisableGuildChat()
    OnChatMessageEventFrame:UnregisterEvent("CHAT_MSG_GUILD")
end

local OG_InstancePause = {
    active = false,
    startTime = nil,
    activeRestrictions = {}
}

OnChatMessageEventFrame:RegisterEvent("ADDON_RESTRICTION_STATE_CHANGED")
OnChatMessageEventFrame:SetScript("OnEvent", function(self, event, ...)
    if event ~= "ADDON_RESTRICTION_STATE_CHANGED" then
        if event == "CHAT_MSG_GUILD" then
            OnChatMessage(self, event, ...)
        end

        return
    end

    local type, state = ...
    local restrictionName = type
    local restrictionState = state

    if restrictionState == Enum.AddOnRestrictionState.Activating or restrictionState == Enum.AddOnRestrictionState.Active then
        OG_InstancePause.activeRestrictions[restrictionName] = restrictionState

        if not OG_InstancePause.active then
            OG_InstancePause.active = true
            OG_InstancePause.startTime = GetTime()
            OG_DisableGuildChat()

            local chatMessage = string.format(
                "|cFFFFFFFF[|r|cFF0000FFOG|r|cFFFFFFFF]|r: Guild chat paused due to |cff55FF99(|r|cffF0F0FF%s|r|cff55FF99)|r(%s)",
                restrictionName, restrictionState)
            table.insert(OG_ChatMessageTable, chatMessage)
            updateTargetEditBoxText(GuildChatWindow.editBox, OG_ChatMessageTable)
        end
        return
    end

    if restrictionState == Enum.AddOnRestrictionState.Inactive then
        OG_InstancePause.activeRestrictions[restrictionName] = nil

        if next(OG_InstancePause.activeRestrictions) == nil then
            local elapsed = OG_InstancePause.startTime and (GetTime() - OG_InstancePause.startTime) or 0
            local minutes = math.floor(elapsed / 60)
            local seconds = math.floor(elapsed % 60)

            OG_EnableGuildChat()

            local chatMessage = string.format(
                "|cFFFFFFFF[|r|cFF0000FFOG|r|cFFFFFFFF]|r: Guild chat resumed after |cff00ff00%02d:%02d|r",
                minutes,
                seconds
            )

            table.insert(OG_ChatMessageTable, chatMessage)
            updateTargetEditBoxText(GuildChatWindow.editBox, OG_ChatMessageTable)

            OG_InstancePause.active = false
            OG_InstancePause.startTime = nil
        else
            local resNameStateMsg = string.format("Restriction Name: |cFF000FF0%s|r\nRestriction State: |cFFFFFF00%s|r",
                restrictionName, restrictionState)
            print(resNameStateMsg)
        end
    end
end)