a fun bot for the hc slack

feat: add min time limit of 6 min

dunkirk.sh 0f816c06 7abc1085

verified
+31 -9
+31 -9
src/features/takes/handlers/upload.ts
··· 76 76 name: "spin-loading", 77 77 }); 78 78 79 + // fetch time spent on project via hackatime 80 + const timeSpent = await fetchHackatimeSummary( 81 + user, 82 + userInDB.hackatimeVersion as HackatimeVersion, 83 + JSON.parse(userInDB.hackatimeKeys), 84 + new Date(userInDB.lastTakeUploadDate), 85 + new Date(), 86 + ).then((res) => res.total_categories_sum || 0); 87 + 88 + if (timeSpent < 360) { 89 + await slackClient.chat.postMessage({ 90 + channel: payload.channel, 91 + thread_ts: payload.ts, 92 + text: "You haven't spent enough time on your project yet! Spend a few more minutes hacking then come back :)", 93 + }); 94 + 95 + await slackClient.reactions.remove({ 96 + channel: payload.channel, 97 + timestamp: payload.ts, 98 + name: "spin-loading", 99 + }); 100 + 101 + await slackClient.reactions.add({ 102 + channel: payload.channel, 103 + timestamp: payload.ts, 104 + name: "tw_timer_clock", 105 + }); 106 + 107 + return; 108 + } 109 + 79 110 // Convert Slack formatting to markdown 80 111 const replaceUserMentions = async (text: string) => { 81 112 const regex = /<@([A-Z0-9]+)>/g; ··· 166 197 mediaUrls.push(...results.filter(Boolean)); 167 198 } 168 199 } 169 - 170 - // fetch time spent on project via hackatime 171 - const timeSpent = await fetchHackatimeSummary( 172 - user, 173 - userInDB.hackatimeVersion as HackatimeVersion, 174 - JSON.parse(userInDB.hackatimeKeys), 175 - new Date(userInDB.lastTakeUploadDate), 176 - new Date(), 177 - ).then((res) => res.total_categories_sum || 0); 178 200 179 201 await db.insert(takesTable).values({ 180 202 id: Bun.randomUUIDv7(),