Sane guiLoop

Sending messages works again, woo
This commit is contained in:
Fierelier 2020-11-21 01:48:43 +01:00
parent aac947eb6f
commit d5357885ff
1 changed files with 42 additions and 33 deletions

View File

@ -546,47 +546,56 @@ def discordClient(token):
@tasks.loop(seconds=0.033)
async def guiLoop():
channels = {}
guis = []
guiLock.acquire()
length = len(openGuis)
index = 0
while index < length:
gui = openGuis[index]
if gui.type == "conversation" and gui.readied == False:
if not gui.channel.id in channels:
channels[gui.channel.id] = {
"channel": gui.channel,
"messages": []
}
guiObj = {"gui":gui,"type":gui.type}
if gui.type == "conversation":
guiObj["channel"] = gui.channel
guiObj["readied"] = gui.readied
guiObj["messages"] = []
guiObj["pendingMessages"] = gui.pendingMessages.copy()
gui.pendingMessages = []
guis.append(guiObj)
index += 1
guiLock.release()
for channelID in channels:
channel = channels[channelID]["channel"]
try:
print("a")
messages = await channel.history(limit=int(config["performance"]["historyFetch"])).flatten()
messages = reversed(messages)
channels[channelID]["messages"] = messages
except:
pass
guiLock.acquire()
length = len(openGuis)
index = 0
while index < length:
gui = openGuis[index]
if gui.type == "conversation" and gui.readied == False and gui.channel.id in channels:
messages = channels[gui.channel.id]["messages"]
if messages == []:
addGuiTask(gui,gui.addMessage,(["","Fetching messages failed."],))
else:
for message in messages:
addGuiTask(gui,gui.addMessage,(message,))
gui.readied = True
addGuiTask(gui,gui.fillMessageLog,())
index += 1
guiLock.release()
for guiData in guis:
gui = guiData["gui"]
guiType = guiData["type"]
if guiType == "conversation":
channel = guiData["channel"]
readied = guiData["readied"]
messages = guiData["messages"]
pendingMessages = guiData["pendingMessages"]
for message in pendingMessages:
try:
await channel.send(message)
except:
print("failed sending message")
if readied == False:
try:
messages = await channel.history(limit=int(config["performance"]["historyFetch"])).flatten()
messages = reversed(messages)
except:
print("failed retrieving messages")
guiLock.acquire()
if readied == False:
if messages == []:
addGuiTask(gui,gui.addMessage,(["","Fetching messages failed."],))
else:
for message in messages:
addGuiTask(gui,gui.addMessage,(message,))
gui.readied = True
addGuiTask(gui,gui.fillMessageLog,())
guiLock.release()
@tasks.loop(seconds=1.0)
async def conversationUpdate():