From 1ee55f995cea7a36abe90bbd07366dd62008bdf7 Mon Sep 17 00:00:00 2001 From: Sammy Date: Sun, 11 Jun 2023 09:01:25 +0200 Subject: [PATCH] minor resilience improvement and formatting in closepoll.ts was an unsafe arrays usage without checking the bounds --- server/commands/closepoll.ts | 11 ++++++++--- server/events/guildScheduledEventCreate.ts | 8 ++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/server/commands/closepoll.ts b/server/commands/closepoll.ts index 062df9e..66c3beb 100644 --- a/server/commands/closepoll.ts +++ b/server/commands/closepoll.ts @@ -29,9 +29,15 @@ export default new Command({ export async function closePoll(guild: Guild, requestId: string) { const guildId = guild.id logger.info("stopping poll", { guildId: guildId, requestId }) - const announcementChannel: TextChannel = (await guild.channels.fetch()) + const channels: TextChannel[] = (await guild.channels.fetch()) ?.filter(channel => channel!.id === config.bot.announcement_channel_id) - .map((value, _) => value)[0] //todo: needs to be done less sketchy + .map((value, _) => value) + + if(!channels || channels.length != 1) { + logger.error(`Could not find announcement channel. Found ${channels}`) + } + + const announcementChannel = channels[0] const messages: Message[] = (await announcementChannel.messages.fetch()) //todo: fetch only pinned messages .map((value, _) => value) @@ -43,7 +49,6 @@ export async function closePoll(guild: Guild, requestId: string) { return } - const lastMessage: Message = messages[0] logger.debug(`Found messages: ${JSON.stringify(messages, null, 2)}`, { guildId: guildId, requestId }) diff --git a/server/events/guildScheduledEventCreate.ts b/server/events/guildScheduledEventCreate.ts index da1985c..9b51552 100644 --- a/server/events/guildScheduledEventCreate.ts +++ b/server/events/guildScheduledEventCreate.ts @@ -41,7 +41,7 @@ export async function execute(event: GuildScheduledEvent) { sentMessage.react(Emotes[i]) } - if(!task){ + if (!task) { task = schedule("0 * * * * *", () => checkForPollsToClose(event)) } @@ -61,15 +61,15 @@ async function checkForPollsToClose(event: GuildScheduledEvent): Promise { .filter(event => event.name.toLowerCase().includes("voting offen")) .map((value, _) => value) - if(!events || events.length <= 0) { + if (!events || events.length <= 0) { logger.info("Did not find any events. Cancelling", { guildId: event.guildId, requestId }) return - } else if(events.length > 1) { + } else if (events.length > 1) { logger.error(`More than one event found. Don't know which one is the right one :( Events: ${JSON.stringify(events, null, 2)}`, { guildId: event.guildId, requestId }) return } const updatedEvent = events[0] //add two hours because of different timezones in discord api and Date.now() - if(!updatedEvent.scheduledStartTimestamp) { + if (!updatedEvent.scheduledStartTimestamp) { logger.error("Event does not have a scheduled start time. Cancelling", { guildId: event.guildId, requestId }) return }