local addonname, shared = ... ---@cast shared HeimdallShared ---@cast addonname string ---@diagnostic disable-next-line: missing-fields shared.Inviter = {} function shared.Inviter.Init() ---@type table local channelRosterFrame = CreateFrame("Frame") channelRosterFrame:RegisterEvent("CHANNEL_ROSTER_UPDATE") channelRosterFrame:SetScript("OnEvent", function(self, event, index) --if not Heimdall_Data.config.inviter.enabled then return end --Since multiple modules depend on this we won't disable it, for now... --I should really create a new module for just this though, eventually local count = select(5, GetChannelDisplayInfo(index)) for i = 1, count do local name = GetChannelRosterInfo(index, i) if name then Heimdall_Data.config.agents[name] = date("%Y-%m-%dT%H:%M:%S") end end end) local inviterGroupFrame = CreateFrame("Frame") local nextUpdate = 0 inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE") inviterGroupFrame:SetScript("OnEvent", function(self, event, ...) if not Heimdall_Data.config.inviter.enabled then return end if not UnitIsGroupLeader("player") then return end if not IsInRaid() then ConvertToRaid() end if Heimdall_Data.config.inviter.allAssist then SetEveryoneIsAssistant() end if Heimdall_Data.config.inviter.agentsAssist then for name, _ in pairs(Heimdall_Data.config.agents) do PromoteToAssistant(name, true) end end end) local inviterChannelFrame = CreateFrame("Frame") inviterChannelFrame:RegisterEvent("CHAT_MSG_CHANNEL") inviterChannelFrame:SetScript("OnEvent", function(self, event, msg, sender, ...) if not Heimdall_Data.config.inviter.enabled then return end local channelId = select(6, ...) local channelname = "" ---@type any[] local channels = { GetChannelList() } for i = 1, #channels, 2 do ---@type number local id = channels[i] ---@type string local name = channels[i + 1] if id == channelId then channelname = name end end if channelname ~= Heimdall_Data.config.inviter.listeningChannel then return end if msg == Heimdall_Data.config.inviter.keyword then InviteUnit(sender) end end) print("Heimdall - Inviter loaded") end