Fix inviter channel scanning

It really was not so easy...
This commit is contained in:
2024-12-27 14:15:03 +01:00
parent 0dd1a6fd69
commit acb2910b70
2 changed files with 39 additions and 15 deletions

View File

@@ -9,35 +9,58 @@ function data.Inviter.Init()
return
end
---@type table<string, boolean>
local channelMembers = {}
local channelRosterFrame = CreateFrame("Frame")
channelRosterFrame:RegisterEvent("CHANNEL_ROSTER_UPDATE")
channelRosterFrame:SetScript("OnEvent", function(self, event, index)
local count = select(5, GetChannelDisplayInfo(index))
channelMembers = {}
for i = 1, count do
local name = GetChannelRosterInfo(index, i)
if name then
channelMembers[name] = true
end
end
end)
---@param channelName string
---@return table<string, boolean>
local function GetChannelMembers(channelName)
local function UpdateChannelMembers(channelName)
local friendsFrame = _G["FriendsFrame"]
local channelFrame = _G["ChannelFrame"]
channelFrame:Show()
OpenFriendsFrame()
_G["FriendsFrameTab3"]:Click()
_G["ChannelButton2"]:Click()
for i = 1, 40 do
local button = _G["ChannelButton" .. i]
if not button then break end
local text = button:GetText()
if text == channelName then
if string.find(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
friendsFrame:Hide()
return channelMembers
end
C_Timer.NewTicker(30, function()
UpdateChannelMembers(data.config.inviter.listeningChannel)
end)
-- print("pls joomp")
-- hooksecurefunc("JumpOrAscendStart", function()
-- print("JOOMP")
-- UpdateChannelMembers(data.config.inviter.listeningChannel)
-- local foo = channelMembers
-- for name, _ in pairs(foo) do
-- print(name)
-- end
-- end)
local inviterGroupFrame = CreateFrame("Frame")
local nextUpdate = 0
inviterGroupFrame:RegisterEvent("GROUP_ROSTER_UPDATE")
@@ -50,7 +73,7 @@ function data.Inviter.Init()
if nextUpdate >= GetTime() then return end
nextUpdate = GetTime() + data.config.inviter.updateInterval
for name, _ in pairs(GetChannelMembers(data.config.inviter.listeningChannel)) do
for name, _ in pairs(channelMembers) do
PromoteToAssistant(name, true)
end