Add threaded initial message fetch
This commit is contained in:
parent
b714658a27
commit
a8d865a24e
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue