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 |