From 8e912ca8f2c0288a0b312b1cd3844d4074cdadb2 Mon Sep 17 00:00:00 2001 From: "Ean Milligan (Bastion)" Date: Sat, 29 Apr 2023 04:56:21 -0400 Subject: [PATCH] Add retrofit system --- src/commands/setup.ts | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/commands/setup.ts b/src/commands/setup.ts index 5b30961..54adff3 100644 --- a/src/commands/setup.ts +++ b/src/commands/setup.ts @@ -18,9 +18,11 @@ import { dbClient, generateGuildSettingKey, lfgChannelSettings, queries } from ' import { CommandDetails } from '../types/commandTypes.ts'; import utils from '../utils.ts'; import { customId as gameSelId } from '../buttons/event-creation/step1-gameSelection.ts'; -import { alternateEventBtnStr, joinEventBtnStr, leaveEventBtnStr, requestToJoinEventBtnStr } from '../buttons/eventUtils.ts'; +import { alternateEventBtnStr, joinEventBtnStr, leaveEventBtnStr, LfgEmbedIndexes, requestToJoinEventBtnStr } from '../buttons/eventUtils.ts'; import { alternateName, eventLinkName, joinName, leaveName, userName } from './managerJLA.ts'; import { createEventSlashName, deleteSlashName, managerJLASlashName, reportSlashName, setupSlashName } from './slashCommandNames.ts'; +import { generateLFGButtons, generateTimeFieldStr } from '../buttons/event-creation/utils.ts'; +import { getLfgMembers } from '../buttons/live-event/utils.ts'; const withoutMgrRole = 'without-manager-role'; const withMgrRole = 'with-manager-role'; @@ -247,9 +249,27 @@ The Discord Slash Command system will ensure you provide all the required detail } // Retrofit all old LFG posts that we found - if (oldLfgMsgs.length) { - // TODO: Retrofit old LFG posts, should delete ones that have already passed, should begin watching these events - } + oldLfgMsgs.forEach((oldEventId) => { + const oldEvent = messages.get(oldEventId); + if (oldEvent && oldEvent.embeds[0].fields && oldEvent.embeds[0].footer) { + const eventMembers = [...getLfgMembers(oldEvent.embeds[0].fields[LfgEmbedIndexes.JoinedMembers].value), ...getLfgMembers(oldEvent.embeds[0].fields[LfgEmbedIndexes.AlternateMembers].value)] + const eventDateTime = new Date((oldEvent.embeds[0].fields[LfgEmbedIndexes.StartTime].value.split('tz#')[1] || ' ').slice(0, -1)); + const eventDateTimeStr = (oldEvent.embeds[0].fields[LfgEmbedIndexes.StartTime].value.split('](')[0] || ' ').slice(1); + oldEvent.embeds[0].fields[LfgEmbedIndexes.StartTime].value = generateTimeFieldStr(eventDateTimeStr, eventDateTime); + oldEvent.embeds[0].footer.text = oldEvent.embeds[0].footer.text.split(' | ')[0]; + const ownerName = oldEvent.embeds[0].footer.text.split(': ')[1]; + const ownerId = eventMembers.find((member) => ownerName === member.name)?.id || 0n; + oldEvent.embeds[0].footer.iconUrl = `${config.links.creatorIcon}#${ownerId}`; + bot.helpers.editMessage(oldEvent.channelId, oldEvent.id, { + content: '', + embeds: [oldEvent.embeds[0]], + components: [{ + type: MessageComponentTypes.ActionRow, + components: generateLFGButtons(false), + }], + }) + } + }); // Store the ids to the db let dbErrorOut = false;