From 204b17533ebaf5541936a35306cb541f473916e2 Mon Sep 17 00:00:00 2001 From: Skye Date: Mon, 13 Mar 2023 18:30:24 +0900 Subject: [PATCH] kluralpit --- index.ts | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/index.ts b/index.ts index 8d5c80a..bdac609 100644 --- a/index.ts +++ b/index.ts @@ -2,6 +2,7 @@ import * as dotenv from "dotenv"; // see https://github.com/motdotla/dotenv#how- dotenv.config(); import { + ActivityType, ChannelType, Client, Colors, @@ -31,11 +32,23 @@ const configuration = new Configuration({ }); const openai = new OpenAIApi(configuration); +async function sleep(ms: number) { + await new Promise((resolve) => setTimeout(() => resolve(), ms)); +} + client.on("ready", async () => { console.log(`Logged in as ${client.user?.tag}!`); const channel = await client.channels.fetch(process.env.CHANNEL ?? ""); if (channel?.type != ChannelType.GuildText) return; channel.send("\\Smolhaj Reset"); + client.user?.setPresence({ + activities: [ + { + type: ActivityType.Playing, + name: "actually nice pluralkit support", + }, + ], + }); }); let resetTime = Date.now(); @@ -59,18 +72,32 @@ client.on("messageCreate", async (message) => { const recieved = SnowflakeUtil.timestampFrom(message.id); - await new Promise((resolve) => setTimeout(() => resolve(), 1500)); + sleep(250); try { - const msgs = await message.channel.messages.fetch({ + let msgs = await message.channel.messages.fetch({ after: SnowflakeUtil.generate({ timestamp: Math.max(Date.now() - 5 * 60 * 1000, resetTime), }).toString(), - before: SnowflakeUtil.generate({ - timestamp: recieved + 250, - }).toString(), + before: message.id, }); + const msgsAfter = await message.channel.messages.fetch({ + after: message.id, + }); + + const nextMessage = msgsAfter.last(); + + if (nextMessage?.webhookId) { + // pluralkit moment + + // remove current message + msgs.delete(message.id); + + // add the pk message + msgs.set(nextMessage.id, nextMessage); + } + const context = [ ...msgs .filter((msg) => { @@ -85,7 +112,10 @@ client.on("messageCreate", async (message) => { return { role: "assistant", content: msg.content }; } let username = msg.member?.displayName ?? msg.author.username; - if (username.toLowerCase().includes("skyevg") && msg.author.id != "1038096782963507210") + if ( + username.toLowerCase().includes("skyevg") && + msg.author.id != "1038096782963507210" + ) username = msg.author.username; // no impersonating :) return { role: "user",