local _, shared = ... ---@cast shared HeimdallShared local ModuleName = "ChatSniffer" ---@class HeimdallChatSnifferConfig ---@field enabled boolean ---@field debug boolean ---@class ChatSniffer shared.ChatSniffer = { Init = function() Heimdall_Chat = Heimdall_Chat or {} local frame = CreateFrame("Frame") frame:RegisterEvent("CHAT_MSG_SAY") frame:RegisterEvent("CHAT_MSG_YELL") frame:RegisterEvent("CHAT_MSG_CHANNEL") frame:RegisterEvent("CHAT_MSG_WHISPER") frame:RegisterEvent("CHAT_MSG_CHANNEL_JOIN") frame:RegisterEvent("CHAT_MSG_CHANNEL_LEAVE") frame:RegisterEvent("CHAT_MSG_EMOTE") frame:RegisterEvent("CHAT_MSG_PARTY") frame:RegisterEvent("CHAT_MSG_PARTY_LEADER") frame:RegisterEvent("CHAT_MSG_RAID") frame:RegisterEvent("CHAT_MSG_RAID_LEADER") frame:RegisterEvent("CHAT_MSG_RAID_WARNING") frame:RegisterEvent("CHAT_MSG_SYSTEM") frame:RegisterEvent("CHAT_MSG_TEXT_EMOTE") frame:RegisterEvent("CHAT_MSG_YELL") frame:SetScript("OnEvent", function(self, event, msg, sender, language, channel) if not Heimdall_Data.config.chatSniffer.enabled then return end if not Heimdall_Data.config.chatSniffer.debug then shared.dump(string.format("[%s] got message", { event, msg, sender, language, channel })) end local timestamp = date("%Y-%m-%d %H:%M:%S") local log = string.format( "%s|%s|%s|%s|%s|%s", tostring(timestamp), tostring(event), tostring(sender), tostring(msg), tostring(language), tostring(channel) ) Heimdall_Chat[#Heimdall_Chat + 1] = log end) print(string.format("[%s] Module initialized", ModuleName)) end, }