blob: 7a3886d59804c107b6d77892d01e026f46c2d5e5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js";
import { login } from "../controllers/pocketbase.js";
export default {
data: new SlashCommandBuilder()
.setName("oncall-check")
.setDescription("Returns a list of members who are currently on call.")
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
execute: async (interaction) => {
const date = new Date();
const dateUTCHours = date.getUTCHours();
const dateUTCMinutes = date.getUTCMinutes();
const dateUTCDay = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][date.getUTCDay()];
const pb = await login();
const members = await pb.collection("members").getFullList();
let membersOnCall = [];
for (const member of members) {
try {
if (member.onCallSchedule) {
const available = member.onCallSchedule[dateUTCDay]?.available || false;
if (available) {
const start = member.onCallSchedule[dateUTCDay].start;
const startHours = start.split(":")[0];
const startMinutes = start.split(":")[1];
const end = member.onCallSchedule[dateUTCDay].end;
const endHours = end.split(":")[0];
const endMinutes = end.split(":")[1];
console.log(`Checking on-call schedule for member ${member.name}: ${start} - ${end} (UTC)`);
if ((dateUTCHours > startHours || (dateUTCHours === startHours && dateUTCMinutes >= startMinutes)) && (dateUTCHours < endHours || (dateUTCHours === endHours && dateUTCMinutes <= endMinutes))) {
membersOnCall.push(member);
}
}
}
} catch (error) {
console.error(`Error checking on-call schedule for member ${member.name}:`, error);
}
}
await interaction.reply({
content: `${membersOnCall.map((member) => `- <@${member.discordId}>`).join("\n") || "No members are currently on call."}`,
ephemeral: true,
});
},
};
|