a fun bot for the hc slack

feat: add min time limit of 6 min

dunkirk.sh 0f816c06 7abc1085

verified
Changed files
+31 -9
src
features
takes
handlers
+31 -9
src/features/takes/handlers/upload.ts
···
name: "spin-loading",
});
+
// fetch time spent on project via hackatime
+
const timeSpent = await fetchHackatimeSummary(
+
user,
+
userInDB.hackatimeVersion as HackatimeVersion,
+
JSON.parse(userInDB.hackatimeKeys),
+
new Date(userInDB.lastTakeUploadDate),
+
new Date(),
+
).then((res) => res.total_categories_sum || 0);
+
+
if (timeSpent < 360) {
+
await slackClient.chat.postMessage({
+
channel: payload.channel,
+
thread_ts: payload.ts,
+
text: "You haven't spent enough time on your project yet! Spend a few more minutes hacking then come back :)",
+
});
+
+
await slackClient.reactions.remove({
+
channel: payload.channel,
+
timestamp: payload.ts,
+
name: "spin-loading",
+
});
+
+
await slackClient.reactions.add({
+
channel: payload.channel,
+
timestamp: payload.ts,
+
name: "tw_timer_clock",
+
});
+
+
return;
+
}
+
// Convert Slack formatting to markdown
const replaceUserMentions = async (text: string) => {
const regex = /<@([A-Z0-9]+)>/g;
···
mediaUrls.push(...results.filter(Boolean));
}
}
-
-
// fetch time spent on project via hackatime
-
const timeSpent = await fetchHackatimeSummary(
-
user,
-
userInDB.hackatimeVersion as HackatimeVersion,
-
JSON.parse(userInDB.hackatimeKeys),
-
new Date(userInDB.lastTakeUploadDate),
-
new Date(),
-
).then((res) => res.total_categories_sum || 0);
await db.insert(takesTable).values({
id: Bun.randomUUIDv7(),