Files
wow-Heimdall/Modules/Inviter.lua
2025-01-01 15:04:20 +01:00

72 lines
2.2 KiB
Lua

local addonname, shared = ...
---@cast shared HeimdallShared
---@cast addonname string
---@diagnostic disable-next-line: missing-fields
shared.Inviter = {}
function shared.Inviter.Init()
---@type table<string, boolean>
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