Skip to content

Commit be2a193

Browse files
committed
chore: fix message merging in CH
1 parent a1ccef4 commit be2a193

1 file changed

Lines changed: 30 additions & 17 deletions

File tree

src/scripts/fetchDiscord.ts

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,15 @@ async function fetchFromDiscord(
8484
throw new Error(`Failed to fetch ${endpoint}: ${response.statusText}`)
8585
}
8686

87-
const data = await response.json()
87+
const rawData = await response.json()
88+
const data = rawData.filter((item) => item && item.author && item.content)
89+
8890
if (fetchType === 'threads') {
8991
allResults.push(...(data.threads || []))
9092
if (!data.has_more) {
9193
break
9294
}
93-
params.before = data.threads[data.threads.length - 1].thread_metadata.archive_timestamp
95+
params.before = data.threads[data.threads.length - 1]?.thread_metadata?.archive_timestamp
9496
} else {
9597
allResults.push(...data)
9698
if (data.length < 100) {
@@ -104,29 +106,40 @@ async function fetchFromDiscord(
104106
}
105107

106108
function processMessages(messages: Message[]) {
107-
const mergedMessages = new Map()
109+
const mergedMessages: Message[] = []
110+
111+
for (let i = 0; i < messages.length; i++) {
112+
const currentMessage = messages[i]
113+
114+
if (!currentMessage || !currentMessage.author || !currentMessage.content) {
115+
console.warn('Skipping message due to missing author or content:', currentMessage)
116+
continue
117+
}
108118

109-
messages.reverse().forEach((message: Message) => {
110-
const key = message.author.id
111119
const isBot =
112-
message.author.bot ||
113-
message.author.username === 'Payload-Bot' ||
114-
message.author.username.includes('Bot')
120+
currentMessage.author.bot ||
121+
currentMessage.author.username === 'Payload-Bot' ||
122+
currentMessage.author.username.includes('Bot')
115123

116124
if (isBot) {
117-
return
125+
continue
118126
}
119-
if (mergedMessages.has(key)) {
120-
const prevMessage = mergedMessages.get(key)
121-
prevMessage.content += `\n\n${message.content}`
122-
prevMessage.attachments = prevMessage.attachments.concat(message.attachments)
127+
128+
if (
129+
mergedMessages.length > 0 &&
130+
mergedMessages[mergedMessages.length - 1].author.id === currentMessage.author.id
131+
) {
132+
const prevMessage = mergedMessages[mergedMessages.length - 1]
133+
prevMessage.content += `\n\n${currentMessage.content}`
134+
prevMessage.attachments = prevMessage.attachments.concat(currentMessage.attachments)
123135
} else {
124-
mergedMessages.set(key, message)
136+
mergedMessages.push({ ...currentMessage })
125137
}
126-
})
138+
}
127139

128-
return Array.from(mergedMessages.values())
140+
return mergedMessages
129141
}
142+
130143
function createSanitizedThread(thread: Thread, messages: Message[]) {
131144
const [intro, ...combinedResponses] = processMessages(messages)
132145

@@ -200,7 +213,7 @@ async function fetchDiscord() {
200213
.then((data) =>
201214
data.docs.map((thread) => ({
202215
id: thread.discordID,
203-
messageCount: 0,
216+
messageCount: thread.communityHelpJSON.messageCount || 0,
204217
})),
205218
)
206219

0 commit comments

Comments
 (0)