fix the order of fetching emojis for messages
This commit is contained in:
		
							parent
							
								
									0b5475e9a8
								
							
						
					
					
						commit
						049fc22326
					
				
					 1 changed files with 20 additions and 21 deletions
				
			
		| 
						 | 
					@ -156,11 +156,30 @@ async function messageToEvent(message, guild, options = {}, di) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Handling emojis that we don't know about. The emoji has to be present in the DB for it to be picked up in the emoji markdown converter.
 | 
				
			||||||
 | 
							// So we scan the message ahead of time for all its emojis and ensure they are in the DB.
 | 
				
			||||||
 | 
							const emojiMatches = [...content.matchAll(/<(a?):([^:>]{2,20}):([0-9]+)>/g)]
 | 
				
			||||||
 | 
							const emojiDownloads = []
 | 
				
			||||||
 | 
							for (const match of emojiMatches) {
 | 
				
			||||||
 | 
								const id = match[3]
 | 
				
			||||||
 | 
								const name = match[2]
 | 
				
			||||||
 | 
								const animated = +!!match[1]
 | 
				
			||||||
 | 
								const row = select("emoji", "id", "WHERE id = ?").pluck().get(id)
 | 
				
			||||||
 | 
								if (!row) {
 | 
				
			||||||
 | 
									// The custom emoji is not registered. We will register it and then add it.
 | 
				
			||||||
 | 
									emojiDownloads.push(
 | 
				
			||||||
 | 
										file.uploadDiscordFileToMxc(file.emoji(id, animated)).then(mxc => {
 | 
				
			||||||
 | 
											db.prepare("INSERT OR IGNORE INTO emoji (id, name, animated, mxc_url) VALUES (?, ?, ?, ?)").run(id, name, animated, mxc)
 | 
				
			||||||
 | 
										})
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							await Promise.all(emojiDownloads)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		let html = markdown.toHTML(content, {
 | 
							let html = markdown.toHTML(content, {
 | 
				
			||||||
			discordCallback: getDiscordParseCallbacks(message, true)
 | 
								discordCallback: getDiscordParseCallbacks(message, true)
 | 
				
			||||||
		}, null, null)
 | 
							}, null, null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// TODO: add a string return type to my discord-markdown library
 | 
					 | 
				
			||||||
		let body = markdown.toHTML(content, {
 | 
							let body = markdown.toHTML(content, {
 | 
				
			||||||
			discordCallback: getDiscordParseCallbacks(message, false),
 | 
								discordCallback: getDiscordParseCallbacks(message, false),
 | 
				
			||||||
			discordOnly: true,
 | 
								discordOnly: true,
 | 
				
			||||||
| 
						 | 
					@ -209,26 +228,6 @@ async function messageToEvent(message, guild, options = {}, di) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Handling emojis that we don't know about. The emoji has to be present in the DB for it to be picked up in the emoji markdown converter.
 | 
					 | 
				
			||||||
		// So we scan the message ahead of time for all its emojis and ensure they are in the DB.
 | 
					 | 
				
			||||||
		const emojiMatches = [...content.matchAll(/<(a?):([^:>]{2,20}):([0-9]+)>/g)]
 | 
					 | 
				
			||||||
		const emojiDownloads = []
 | 
					 | 
				
			||||||
		for (const match of emojiMatches) {
 | 
					 | 
				
			||||||
			const id = match[3]
 | 
					 | 
				
			||||||
			const name = match[2]
 | 
					 | 
				
			||||||
			const animated = +!!match[1]
 | 
					 | 
				
			||||||
			const row = select("emoji", "id", "WHERE id = ?").pluck().get(id)
 | 
					 | 
				
			||||||
			if (!row) {
 | 
					 | 
				
			||||||
				// The custom emoji is not registered. We will register it and then add it.
 | 
					 | 
				
			||||||
				emojiDownloads.push(
 | 
					 | 
				
			||||||
					file.uploadDiscordFileToMxc(file.emoji(id, animated)).then(mxc => {
 | 
					 | 
				
			||||||
						db.prepare("INSERT OR IGNORE INTO emoji (id, name, animated, mxc_url) VALUES (?, ?, ?, ?)").run(id, name, animated, mxc)
 | 
					 | 
				
			||||||
					})
 | 
					 | 
				
			||||||
				)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		await Promise.all(emojiDownloads)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// Star * prefix for fallback edits
 | 
							// Star * prefix for fallback edits
 | 
				
			||||||
		if (options.includeEditFallbackStar) {
 | 
							if (options.includeEditFallbackStar) {
 | 
				
			||||||
			body = "* " + body
 | 
								body = "* " + body
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue