From fd1cb69977b224744dbae5e528e063024afffb09 Mon Sep 17 00:00:00 2001 From: LordRyuga Date: Sat, 5 Jul 2025 12:48:40 +0530 Subject: [PATCH 1/3] fix: fixes timezone issues assuming server is always parsing ist --- services/emojiParser.js | 2 ++ services/timeParser.js | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/services/emojiParser.js b/services/emojiParser.js index 907955a..b2b9db9 100644 --- a/services/emojiParser.js +++ b/services/emojiParser.js @@ -6,6 +6,8 @@ export default function parseEmoji(message) { const lines = message.split('\n'); const emojiLine = lines.find(line => line.toLowerCase().startsWith('react with ')); + if (!emojiLine) return null; + const emojiStr = emojiLine.split('react with ')[1]?.trim(); // const match = message.match(/react with\s*:(\w+):/i); diff --git a/services/timeParser.js b/services/timeParser.js index 7dc2f21..0f1fd4e 100644 --- a/services/timeParser.js +++ b/services/timeParser.js @@ -30,6 +30,9 @@ export default function parseEventTime(message) { const dateObj = new Date(Date.UTC(year, month, day, hour, minute)); // console.log('Parsed date object:', dateObj); - return dateObj.toISOString(); + + const utcTime = new Date(dateObj.getTime() - (5.5 * 60 * 60 * 1000)); + + return utcTime.toISOString(); } From 1697a058276b2f71c115dde7b0dc738c40743aae Mon Sep 17 00:00:00 2001 From: LordRyuga Date: Sat, 5 Jul 2025 13:38:57 +0530 Subject: [PATCH 2/3] fix: adds try catch blocks in eventController.js to prevent server crashes --- controllers/eventController.js | 98 +++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 42 deletions(-) diff --git a/controllers/eventController.js b/controllers/eventController.js index 8abcaf4..d07d432 100644 --- a/controllers/eventController.js +++ b/controllers/eventController.js @@ -69,57 +69,71 @@ const postMessageToSlack = async (message, channelId) => { } export const handleReactionAdded = async (event) => { - console.log('Processing reaction_added event'); - const { user, reaction, item } = event; - - const savedEvent = await getEventByTimestamp(item.ts); - // console.log(reaction); - // console.log(item); - // console.log(savedEvent); - - const savedEmojiArr = savedEvent.emoji.split(':'); - const savedEmoji = savedEmojiArr[1]; - - - - if (reaction == savedEmoji) { - const params = { - event_id: savedEvent.id, - user_id: user, - reaction: reaction, + try{ + + console.log('Processing reaction_added event'); + const { user, reaction, item } = event; + + const savedEvent = await getEventByTimestamp(item.ts); + // console.log(reaction); + // console.log(item); + // console.log(savedEvent); + + const savedEmojiArr = savedEvent.emoji.split(':'); + const savedEmoji = savedEmojiArr[1]; + + + + if (reaction == savedEmoji) { + const params = { + event_id: savedEvent.id, + user_id: user, + reaction: reaction, + } + await addReaction(params); + return; + } else { + console.log("Emoji does not match required emoji"); + return; } - await addReaction(params); - return; - } else { - console.log("Emoji does not match required emoji"); + } catch(err) + { + console.error(err); return; } } export const handleReactionRemoved = async (event) => { console.log('👍 Processing reaction_added event'); - const { user, reaction, item } = event; - const savedEvent = await getEventByTimestamp(item.ts); - // console.log(reaction); - // console.log(item); - // console.log(savedEvent); - - const savedEmojiArr = savedEvent.emoji.split(':'); - const savedEmoji = savedEmojiArr[1]; - - - - if (reaction == savedEmoji) { - const params = { - event_id: savedEvent.id, - user_id: user, - reaction: reaction, + try{ + const { user, reaction, item } = event; + + const savedEvent = await getEventByTimestamp(item.ts); + // console.log(reaction); + // console.log(item); + // console.log(savedEvent); + + const savedEmojiArr = savedEvent.emoji.split(':'); + const savedEmoji = savedEmojiArr[1]; + + + + if (reaction == savedEmoji) { + const params = { + event_id: savedEvent.id, + user_id: user, + reaction: reaction, + } + await removeReaction(params); + return; + } else { + console.log("Emoji does not match required emoji"); + return; } - await removeReaction(params); - return; - } else { - console.log("Emoji does not match required emoji"); + }catch (err) + { + console.error(err); return; } } From 375a58bd61f7bff920fb98468dc996efe0503ce2 Mon Sep 17 00:00:00 2001 From: LordRyuga Date: Mon, 25 Aug 2025 01:00:44 +0530 Subject: [PATCH 3/3] fix(keyUpdater): removes restriction of 1 key per year --- controllers/keyHolders.js | 22 +++++++++++----------- controllers/labBot.js | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/controllers/keyHolders.js b/controllers/keyHolders.js index f83a9ff..23b7589 100644 --- a/controllers/keyHolders.js +++ b/controllers/keyHolders.js @@ -9,17 +9,17 @@ export const addHolder = async (req, res) => { const yearPrefix = enroll_num_str.substring(0, 2); try { - const doesExist = await pool.query( - 'SELECT * FROM keyHolders WHERE CAST(enrollment_num AS TEXT) ~ $1', - [`^${yearPrefix}`] - ); - - if (doesExist && doesExist.rowCount > 0) { - await pool.query( - 'DELETE FROM keyHolders WHERE CAST(enrollment_num AS TEXT) ~ $1', - [`^${yearPrefix}`] - ); - } + // const doesExist = await pool.query( + // 'SELECT * FROM keyHolders WHERE CAST(enrollment_num AS TEXT) ~ $1', + // [`^${yearPrefix}`] + // ); + + // if (doesExist && doesExist.rowCount > 0) { + // await pool.query( + // 'DELETE FROM keyHolders WHERE CAST(enrollment_num AS TEXT) ~ $1', + // [`^${yearPrefix}`] + // ); + // } const memberDetails = await pool.query( 'SELECT slack_name, enrollment_num, bhawan FROM members_info WHERE enrollment_num = $1', [enroll_num] diff --git a/controllers/labBot.js b/controllers/labBot.js index 1f28c43..e925671 100644 --- a/controllers/labBot.js +++ b/controllers/labBot.js @@ -228,7 +228,7 @@ const postMessageToSlack = async (message) => { }, { headers: { 'Content-Type': 'application/json', - 'Authorization': `Bearer ${SLACK_TOKEN}`, + 'Authorization': `Bearer ${BotToken}`, }, }); } catch (error) {