Add threaded initial message fetch

This commit is contained in:
Fierelier 2020-11-20 15:46:39 +01:00
parent b714658a27
commit a8d865a24e
1 changed files with 35 additions and 21 deletions

View File

@ -546,32 +546,46 @@ def discordClient(token):
@tasks.loop(seconds=0.033)
async def guiLoop():
channels = {}
guiLock.acquire()
length = len(openGuis)
index = 0
while index < length:
gui = openGuis[index]
if gui.type == "conversation":
if gui.readied == False:
try:
messages = await gui.channel.history(limit=int(config["performance"]["historyFetch"])).flatten()
for message in reversed(messages):
addGuiTask(gui,gui.addMessage,(message,))
except:
addGuiTask(gui,gui.addMessage,(["","Fetching messages failed."],))
addGuiTask(gui,gui.fillMessageLog,())
gui.readied = True
while len(gui.pendingMessages) > 0:
message = ""
try:
message = gui.pendingMessages.pop(0)
await gui.channel.send(message)
except:
print("error sending message")
index = index + 1
if gui.type == "conversation" and gui.readied == False:
if not gui.channel.id in channels:
channels[gui.channel.id] = {
"channel": gui.channel,
"messages": []
}
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()
@tasks.loop(seconds=1.0)