2021-06-06 23:51:32 +02:00
|
|
|
import { Message } from "discord.js";
|
2020-12-23 03:47:43 +02:00
|
|
|
import { TStarboardOpts } from "../types";
|
2021-06-06 23:51:32 +02:00
|
|
|
import { createStarboardPseudoFooterForMessage } from "./createStarboardPseudoFooterForMessage";
|
2020-12-23 05:28:21 +02:00
|
|
|
import Timeout = NodeJS.Timeout;
|
|
|
|
|
|
|
|
const DEBOUNCE_DELAY = 1000;
|
|
|
|
const debouncedUpdates: Record<string, Timeout> = {};
|
2020-12-23 03:47:43 +02:00
|
|
|
|
|
|
|
export async function updateStarboardMessageStarCount(
|
|
|
|
starboard: TStarboardOpts,
|
|
|
|
originalMessage: Message,
|
|
|
|
starboardMessage: Message,
|
|
|
|
starEmoji: string,
|
|
|
|
starCount: number,
|
|
|
|
) {
|
2020-12-23 05:28:21 +02:00
|
|
|
const key = `${originalMessage.id}-${starboardMessage.id}`;
|
|
|
|
if (debouncedUpdates[key]) {
|
|
|
|
clearTimeout(debouncedUpdates[key]);
|
|
|
|
}
|
|
|
|
|
|
|
|
debouncedUpdates[key] = setTimeout(() => {
|
|
|
|
delete debouncedUpdates[key];
|
|
|
|
const embed = starboardMessage.embeds[0]!;
|
2020-12-23 15:56:49 +02:00
|
|
|
embed.fields!.pop(); // Remove pseudo footer
|
2020-12-23 05:28:21 +02:00
|
|
|
embed.fields!.push(createStarboardPseudoFooterForMessage(starboard, originalMessage, starEmoji, starCount)); // Create new pseudo footer
|
|
|
|
starboardMessage.edit({ embed });
|
|
|
|
}, DEBOUNCE_DELAY);
|
2020-12-23 03:47:43 +02:00
|
|
|
}
|