better thread caching
This commit is contained in:
		
							parent
							
								
									2ee2b46bbf
								
							
						
					
					
						commit
						17fab4658b
					
				
					 1 changed files with 16 additions and 9 deletions
				
			
		
							
								
								
									
										25
									
								
								src/index.js
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								src/index.js
									
										
									
									
									
								
							| 
						 | 
					@ -72,15 +72,6 @@ bot.on("messageCreate", async (msg) => {
 | 
				
			||||||
  ) {
 | 
					  ) {
 | 
				
			||||||
    const newChannel = await bot.getDMChannel(msg.author.id);
 | 
					    const newChannel = await bot.getDMChannel(msg.author.id);
 | 
				
			||||||
    if (msg.channel.id == newChannel.id) msg.channel = newChannel;
 | 
					    if (msg.channel.id == newChannel.id) msg.channel = newChannel;
 | 
				
			||||||
  } else if (
 | 
					 | 
				
			||||||
    msg.guildID &&
 | 
					 | 
				
			||||||
    !bot.guilds.get(msg.guildID).channels.has(msg.channel.id)
 | 
					 | 
				
			||||||
  ) {
 | 
					 | 
				
			||||||
    const threads = await bot.requestHandler
 | 
					 | 
				
			||||||
      .request("GET", `/guilds/${msg.guildID}/threads/active`, true)
 | 
					 | 
				
			||||||
      .then((x) => x.threads);
 | 
					 | 
				
			||||||
    const thread = threads.filter((x) => x.id == msg.channel.id)[0];
 | 
					 | 
				
			||||||
    if (thread) msg.channel = new Eris.TextChannel(thread, bot);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // if we still have no dm channel (threads cause this too)
 | 
					  // if we still have no dm channel (threads cause this too)
 | 
				
			||||||
| 
						 | 
					@ -108,6 +99,22 @@ bot.on("ready", async () => {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bot.once("ready", async function () {
 | 
				
			||||||
 | 
					  const guilds = bot.guilds.values();
 | 
				
			||||||
 | 
					  async function cacheThreads(guild) {
 | 
				
			||||||
 | 
					    if (!guild) return;
 | 
				
			||||||
 | 
					    const threads = await bot.requestHandler
 | 
				
			||||||
 | 
					      .request("GET", `/guilds/${guild.id}/threads/active`, true)
 | 
				
			||||||
 | 
					      .then((x) => x.threads);
 | 
				
			||||||
 | 
					    for (const thread of threads) {
 | 
				
			||||||
 | 
					      guild.channels.set(thread.id, new Eris.TextChannel(thread, bot));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const next = guilds.next().value;
 | 
				
			||||||
 | 
					    if (next) await cacheThreads(next);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  await cacheThreads(guilds.next().value);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bot.on("error", (err) => {
 | 
					bot.on("error", (err) => {
 | 
				
			||||||
  logger.error("hf:main", "Catching error: " + err);
 | 
					  logger.error("hf:main", "Catching error: " + err);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue