GPTcord/src/toOpenAIMessages.ts

44 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-03-14 21:16:54 +01:00
import { ChatCompletionRequestMessage as OpenAIMessage } from "openai";
import { Collection, Message as DiscordMessage } from "discord.js";
import config from "./config.json";
export function formatMessage(message: DiscordMessage): string {
2023-03-14 21:16:54 +01:00
let rvalue: string = message.cleanContent;
for (const attachment of message.attachments) {
rvalue += ` [Attachment: ${attachment[1].name}`;
rvalue += attachment[1].description ? ` - ${attachment[1].description}` : "";
rvalue += "]";
}
for (const embed of message.embeds) {
rvalue += ` [Embed:`;
rvalue += embed.title ? ` ${embed.title}` : "";
rvalue += embed.author ? ` by ${embed.author}` : "";
rvalue += embed.title || embed.author ? " -": "";
rvalue += embed.description ? ` ${embed.description}` : "";
rvalue += "]";
}
return rvalue;
}
export default function toOpenAIMessages(messages: Collection<string, DiscordMessage>): OpenAIMessage[] {
const rvalue: OpenAIMessage[] = [];
rvalue.push({ role: "system", content: config.systemPrompt});
messages
.sort((a, b) => a.createdTimestamp - b.createdTimestamp)
.each(message => {
rvalue.push({
role: message.author.id == message.client.user.id ? "assistant" : "user",
content: formatMessage(message),
name: message.member?.displayName,
});
});
return rvalue;
}