Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions apps/cron/src/crons/reminder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,14 @@ function genCronLogic(webhook: WebhookClient): () => Promise<void> {
0,
);

console.log(`Found a total of ${totalEvents} events`);
for (const group of groupedPrefixes) {
console.log(`Events for ${group.prefix}`);
for (const event of group.events) {
console.log(`Title: ${event.name}`);
}
}

if (totalEvents === 0) return;

// Sunday gets all events
Expand All @@ -156,19 +164,18 @@ function genCronLogic(webhook: WebhookClient): () => Promise<void> {
await webhook.send({
content: `# Events this Week (${formattedDate})\nWe hope you've had an amazing weekend so far, @everyone :D\nHere are some of the events planned for this week!`,
});
return;
}

const today = new Date();
const formattedDate = today.toLocaleDateString("en-US", {
weekday: "long",
month: "long",
day: "numeric",
});
} else {
const today = new Date();
const formattedDate = today.toLocaleDateString("en-US", {
weekday: "long",
month: "long",
day: "numeric",
});

await webhook.send({
content: `# Event Reminders\nGood morning, <@&${DISCORD_REMINDER_ROLE_ID}>!\nToday is ${formattedDate}, and here are some reminders about upcoming events!`,
});
await webhook.send({
content: `# Event Reminders\nGood morning, <@&${DISCORD_REMINDER_ROLE_ID}>!\nToday is ${formattedDate}, and here are some reminders about upcoming events!`,
});
}

// For each prefix group, send a line announcing the prefix, then send each event as an embed
for (const group of groupedPrefixes) {
Expand Down
27 changes: 13 additions & 14 deletions apps/cron/src/crons/role-sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ export const roleSync = new CronBuilder({
let addedCount = 0;
let removedCount = 0;
let skippedCount = 0;
let errorCount = 0;

const erroredUsers = [];

for (const user of users) {
try {
Expand All @@ -57,9 +60,6 @@ export const roleSync = new CronBuilder({
// Check 1: Remove permissions from Blade if user doesn't have role on Discord
for (const perm of userPermissions) {
if (!discordRoleIds.includes(perm.discordRoleId)) {
console.log(
`Removing "${perm.roleName}" from user ${user.name} (${user.discordUserId}) - not on Discord`,
);
await db
.delete(Permissions)
.where(eq(Permissions.id, perm.permissionId));
Expand All @@ -78,9 +78,6 @@ export const roleSync = new CronBuilder({
continue;
}

console.log(
`Adding "${role.name}" to user ${user.name} (${user.discordUserId}) - found on Discord`,
);
await db.insert(Permissions).values({
roleId: role.id,
userId: user.id,
Expand All @@ -90,21 +87,23 @@ export const roleSync = new CronBuilder({
} catch (error) {
// User might not be in the guild anymore
if ((error as { status?: number } | undefined)?.status === 404) {
console.log(
`User ${user.name} (${user.discordUserId}) not found in guild - skipping`,
);
skippedCount++;
} else {
console.error(
`Error syncing user ${user.name} (${user.discordUserId}):`,
error,
);
errorCount++;
if (erroredUsers.length < 5) erroredUsers.push(user.name);
}
}
}

console.log(
`Sync completed. Added: ${addedCount}, Removed: ${removedCount}, Skipped: ${skippedCount}`,
`Sync completed. Added: ${addedCount}, Removed: ${removedCount}, Skipped: ${skippedCount}, Errors: ${errorCount}`,
);

if (errorCount > 0) {
console.warn(`First ${erroredUsers.length} users it errored for:`);
for (const name of erroredUsers) {
console.warn(name);
}
}
},
);
6 changes: 4 additions & 2 deletions apps/cron/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { alumniAssign } from "./crons/alumni-assign";
import { capybara, cat, duck, goat } from "./crons/animals";
import { backupFilteredDb } from "./crons/backup-filtered-db";
import { leetcode } from "./crons/leetcode";
import { hackReminders, preReminders, reminders } from "./crons/reminder";
import { preReminders, reminders } from "./crons/reminder";
import { roleSync } from "./crons/role-sync";

alumniAssign.schedule();
Expand All @@ -18,6 +18,8 @@ leetcode.schedule();

preReminders.schedule();
reminders.schedule();
hackReminders.schedule();

// Silencing for now, needs to be manually re-enabled for hacks @WHOEVER_IS_DEV_LEAD_RN
// hackReminders.schedule();

roleSync.schedule();
Loading