Compare with Previous | Blame | View Log
AutoDNDSV = { enabled = false, message = "", } local DELAY = 0.1 local sv local timer local oldSendChatMessage = SendChatMessage local f = CreateFrame("Frame") f:RegisterEvent("PLAYER_LOGIN") f:Hide() local function GoDND() oldSendChatMessage(sv.message, "DND") f:RegisterEvent("CHAT_MSG_SYSTEM") end f:SetScript("OnEvent", function(_, event, arg1) if event == "PLAYER_LOGIN" then sv = AutoDNDSV if sv.enabled and not UnitIsDND("player") then GoDND() end elseif arg1 == CLEARED_AFK then timer = 0 f:Show() end end) f:SetScript("OnUpdate", function(_, elapsed) timer = timer + elapsed if timer >= DELAY then GoDND() f:Hide() end end) function SendChatMessage(message, chatType, ...) if chatType == "DND" then if UnitIsDND("player") and message == "" then sv.enabled = false oldSendChatMessage(message, chatType, ...) f:UnregisterEvent("CHAT_MSG_SYSTEM") f:Hide() elseif UnitIsAFK("player") then sv.message = message sv.enabled = true f:RegisterEvent("CHAT_MSG_SYSTEM") oldSendChatMessage("", "AFK", ...) else sv.message = message sv.enabled = true GoDND() end else oldSendChatMessage(message, chatType, ...) end end