aboutsummaryrefslogtreecommitdiff
path: root/174bg/discord-bot/commands/oncall-check.js
diff options
context:
space:
mode:
authorAlex Pooley (@zuedev) <zuedev@gmail.com>2026-07-18 11:53:19 +0100
committerAlex Pooley (@zuedev) <zuedev@gmail.com>2026-07-18 11:53:19 +0100
commit91900b943def6ae9e7dab58ee4453e3874a21841 (patch)
tree8abcdc7a51ba17d55a0e772afe72c06062111155 /174bg/discord-bot/commands/oncall-check.js
parentefa927adf3850cb8f3f38cea9ed4dd01425ade59 (diff)
downloadunnamed-group-91900b943def6ae9e7dab58ee4453e3874a21841.tar
unnamed-group-91900b943def6ae9e7dab58ee4453e3874a21841.tar.gz
unnamed-group-91900b943def6ae9e7dab58ee4453e3874a21841.tar.bz2
unnamed-group-91900b943def6ae9e7dab58ee4453e3874a21841.tar.xz
unnamed-group-91900b943def6ae9e7dab58ee4453e3874a21841.zip
add oncall-check command
Diffstat (limited to '174bg/discord-bot/commands/oncall-check.js')
-rw-r--r--174bg/discord-bot/commands/oncall-check.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/174bg/discord-bot/commands/oncall-check.js b/174bg/discord-bot/commands/oncall-check.js
new file mode 100644
index 0000000..7af986a
--- /dev/null
+++ b/174bg/discord-bot/commands/oncall-check.js
@@ -0,0 +1,50 @@
+import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js";
+import PocketBase from "pocketbase";
+
+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 = new PocketBase(process.env.POCKETBASE_URL);
+ pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+
+ 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];
+
+ 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,
+ });
+ },
+};