From 500c543d7cacf58c78a7a28901cdfedd864284cf Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sun, 25 May 2025 02:37:07 +0200 Subject: [PATCH] Add ChatSniffer module and update saved variables --- Heimdall.lua | 2 ++ Heimdall.toc | 2 +- Modules/ChatSniffer.lua | 38 ++++++++++++++++++++++++++++++++++++++ Modules/Sniffer.lua | 6 ++++-- 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 Modules/ChatSniffer.lua diff --git a/Heimdall.lua b/Heimdall.lua index 50cee7e..8eace42 100644 --- a/Heimdall.lua +++ b/Heimdall.lua @@ -59,6 +59,7 @@ local function init() ---@field StinkyCache InitTable ---@field Configurator InitTable ---@field AchievementSniffer InitTable + ---@field ChatSniffer InitTable --- Config --- ---@class HeimdallConfig @@ -737,6 +738,7 @@ local function init() shared.Configurator.Init() shared.StinkyCache.Init() shared.AchievementSniffer.Init() + shared.ChatSniffer.Init() print("Heimdall loaded!") end diff --git a/Heimdall.toc b/Heimdall.toc index 04ad434..d6f6150 100644 --- a/Heimdall.toc +++ b/Heimdall.toc @@ -3,7 +3,7 @@ ## Version: 3.12.0 ## Notes: Watches over areas and alerts when hostiles spotted ## Author: Cyka -## SavedVariables: Heimdall_Data, Heimdall_Achievements +## SavedVariables: Heimdall_Data, Heimdall_Achievements, Heimdall_Chat _L.lua Modules/CLEUParser.lua diff --git a/Modules/ChatSniffer.lua b/Modules/ChatSniffer.lua new file mode 100644 index 0000000..43db3df --- /dev/null +++ b/Modules/ChatSniffer.lua @@ -0,0 +1,38 @@ +local _, shared = ... +---@cast shared HeimdallShared +local ModuleName = "ChatSniffer" + +---@diagnostic disable-next-line: missing-fields +shared.ChatSniffer = {} +function shared.ChatSniffer.Init() + 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) + local log = string.format( + "%s|%s|%s|%s|%s", + tostring(event), + tostring(sender), + tostring(msg), + tostring(language), + tostring(channel) + ) + Heimdall_Chat[#Heimdall_Chat + 1] = log + end) + + print("[Heimdall] ChatSniffer loaded") +end diff --git a/Modules/Sniffer.lua b/Modules/Sniffer.lua index 1f7f96c..5d89386 100644 --- a/Modules/Sniffer.lua +++ b/Modules/Sniffer.lua @@ -19,11 +19,13 @@ function shared.Sniffer.Init() end return end - if smellThrottle[stinky] and GetTime() - smellThrottle[stinky] < Heimdall_Data.config.sniffer.throttleTime then + local now = GetTime() + local throttle = smellThrottle[stinky] or 0 + if now - throttle < Heimdall_Data.config.sniffer.throttle then if Heimdall_Data.config.sniffer.debug then print(string.format("%s: Throttled", ModuleName)) end return end - smellThrottle[stinky] = GetTime() + smellThrottle[stinky] = now for _, channel in pairs(Heimdall_Data.config.sniffer.channels) do local locale = shared.GetLocaleForChannel(channel)