62 lines
1.9 KiB
Lua
62 lines
1.9 KiB
Lua
local addonname, shared = ...
|
|
---@cast shared HeimdallShared
|
|
---@cast addonname string
|
|
|
|
---@diagnostic disable-next-line: missing-fields
|
|
shared.Inviter = {}
|
|
function shared.Inviter.Init()
|
|
---@type Timer
|
|
local updateTimer = nil
|
|
|
|
local function FixGroup()
|
|
if not IsInRaid() then ConvertToRaid() end
|
|
if Heimdall_Data.config.inviter.allAssist then SetEveryoneIsAssistant() end
|
|
--shared.dumpTable(Heimdall_Data.config.inviter)
|
|
if Heimdall_Data.config.inviter.agentsAssist then
|
|
--shared.dumpTable(Heimdall_Data.config.agents)
|
|
for name, _ in pairs(Heimdall_Data.config.agents) do
|
|
if UnitInParty(name)
|
|
and not UnitIsGroupLeader(name)
|
|
and not UnitIsRaidOfficer(name) then
|
|
print("Promoting " .. name .. " to assistant")
|
|
PromoteToAssistant(name, true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local inviterGroupFrame = CreateFrame("Frame")
|
|
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 updateTimer then updateTimer:Cancel() end
|
|
updateTimer = C_Timer.NewTimer(Heimdall_Data.config.inviter.throttle, FixGroup)
|
|
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
|