Rework inviter to grant assist only to members of listenChannel

This commit is contained in:
2024-12-26 21:29:27 +01:00
parent 3049a0b554
commit 5f3374a073
2 changed files with 44 additions and 3 deletions

View File

@@ -9,7 +9,37 @@ function data.Inviter.Init()
return
end
---@param channelName string
---@return table<string, boolean>
local function GetChannelMembers(channelName)
local channelFrame = _G["ChannelFrame"]
channelFrame:Show()
for i = 1, 40 do
local button = _G["ChannelButton" .. i]
if not button then break end
local text = button:GetText()
if text == channelName then
button:Click()
break
end
end
local index = GetSelectedDisplayChannel()
local count = select(5, GetChannelDisplayInfo(index))
local res = {}
for i = 1, count do
local name = GetChannelRosterInfo(index, i)
if name then
res[name] = true
end
end
channelFrame:Hide()
return res
end
local inviterGroupFrame = CreateFrame("Frame")
local nextUpdate = 0
inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
inviterGroupFrame:SetScript("OnEvent", function(self, event, ...)
if not UnitIsGroupLeader("player") then return end
@@ -18,9 +48,15 @@ function data.Inviter.Init()
ConvertToRaid()
end
if not IsEveryoneAssistant() then
SetEveryoneIsAssistant(true)
if nextUpdate >= GetTime() then return end
nextUpdate = GetTime() + data.config.inviter.updateInterval
for name, _ in pairs(GetChannelMembers(data.config.inviter.listeningChannel)) do
PromoteToAssistant(name, true)
end
-- if not IsEveryoneAssistant() then
-- SetEveryoneIsAssistant(true)
-- end
end)
local inviterChannelFrame = CreateFrame("Frame")