diff --git a/src/execution.ts b/src/execution.ts index fec4160..57a5463 100644 --- a/src/execution.ts +++ b/src/execution.ts @@ -267,7 +267,6 @@ async function executeFromQueue(channel: string) { messages.forEach(m => { Moderation.checkMessageNoReturn(m); }); - const questionMessageId: string = message instanceof DiscordApi.Message ? message.id : ''; if (message instanceof DiscordApi.Message) { channelQueue.startTyping(); } @@ -275,13 +274,7 @@ async function executeFromQueue(channel: string) { await message.deferReply(); } - messages.sort((a, b) => { - if (a.id === questionMessageId) return -1; - if (b.id === questionMessageId) return 1; - return b.createdTimestamp - a.createdTimestamp; - }); - - OpenAImessages = toOpenAIMessages(messages.values()); + OpenAImessages = toOpenAIMessages(messages); let generatedMessage: ChatCompletionResponseMessage | undefined = undefined; let answer: Awaited>; diff --git a/src/toOpenAIMessages.ts b/src/toOpenAIMessages.ts index e868b45..598238d 100644 --- a/src/toOpenAIMessages.ts +++ b/src/toOpenAIMessages.ts @@ -92,18 +92,17 @@ function getAuthorUsername(message: DiscordMessage): string | undefined { } /** - * Converts the Iterable of Discord Messages to array of OpenAI Messages to send - * first message in the interable will be the last of the returned array (reverse order) - * @param messages the iterable to convert + * Converts the Collection of Discord Messages to array of OpenAI Messages to send + * @param messages the collection to convert * @returns the converted messages */ -export default function toOpenAIMessages( - messages: Iterable, -): OpenAIMessage[] { +export default function toOpenAIMessages(messages: Collection): OpenAIMessage[] { const rvalue: OpenAIMessage[] = []; let tokenCount = 0; - for (const message of messages) { + messages.sort((a, b) => b.createdTimestamp - a.createdTimestamp); + + for (const message of messages.values()) { const content = formatMessage(message); // FIXME: tokens are not being counted properly (it's lower than it is) but it's enough for me for now. tokenCount += countTokens(content);