aboutsummaryrefslogtreecommitdiff
path: root/174bg/discord-bot
diff options
context:
space:
mode:
Diffstat (limited to '174bg/discord-bot')
-rw-r--r--174bg/discord-bot/.env.example3
-rw-r--r--174bg/discord-bot/commands/oncall-check.js7
-rw-r--r--174bg/discord-bot/commands/pocketbase.js17
-rw-r--r--174bg/discord-bot/controllers/pocketbase.js22
-rw-r--r--174bg/discord-bot/utilities/getUrl.js11
5 files changed, 44 insertions, 16 deletions
diff --git a/174bg/discord-bot/.env.example b/174bg/discord-bot/.env.example
index 0b2a30f..42f20fc 100644
--- a/174bg/discord-bot/.env.example
+++ b/174bg/discord-bot/.env.example
@@ -2,4 +2,5 @@ DISCORD_CLIENT_ID=
DISCORD_BOT_TOKEN=
DISCORD_GUILD_ID=
POCKETBASE_URL=
-POCKETBASE_AUTH_TOKEN= \ No newline at end of file
+POCKETBASE_SUPERUSER_EMAIL=
+POCKETBASE_SUPERUSER_PASSWORD= \ No newline at end of file
diff --git a/174bg/discord-bot/commands/oncall-check.js b/174bg/discord-bot/commands/oncall-check.js
index 7af986a..7a3886d 100644
--- a/174bg/discord-bot/commands/oncall-check.js
+++ b/174bg/discord-bot/commands/oncall-check.js
@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js";
-import PocketBase from "pocketbase";
+import { login } from "../controllers/pocketbase.js";
export default {
data: new SlashCommandBuilder()
@@ -12,8 +12,7 @@ export default {
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 pb = await login();
const members = await pb.collection("members").getFullList();
@@ -32,6 +31,8 @@ export default {
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);
}
diff --git a/174bg/discord-bot/commands/pocketbase.js b/174bg/discord-bot/commands/pocketbase.js
index e223ec4..5724568 100644
--- a/174bg/discord-bot/commands/pocketbase.js
+++ b/174bg/discord-bot/commands/pocketbase.js
@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js";
-import PocketBase from "pocketbase";
+import { login } from "../controllers/pocketbase.js";
import uex from "../.cache/uex.json" with { type: "json" };
export default {
@@ -70,8 +70,7 @@ export default {
};
async function populateUexItems(interaction) {
- const pb = new PocketBase(process.env.POCKETBASE_URL);
- pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+ const pb = await login();
const items = uex.items ?? [];
@@ -131,8 +130,7 @@ async function populateUexItems(interaction) {
}
async function populateUexSpaceStations(interaction) {
- const pb = new PocketBase(process.env.POCKETBASE_URL);
- pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+ const pb = await login();
const stations = uex.space_stations ?? [];
@@ -192,8 +190,7 @@ async function populateUexSpaceStations(interaction) {
}
async function populateUexPointsOfInterest(interaction) {
- const pb = new PocketBase(process.env.POCKETBASE_URL);
- pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+ const pb = await login();
const pointsOfInterest = uex.points_of_interest ?? [];
@@ -248,8 +245,7 @@ async function populateUexPointsOfInterest(interaction) {
}
async function populateInventoryLocations(interaction) {
- const pb = new PocketBase(process.env.POCKETBASE_URL);
- pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+ const pb = await login();
const stations = uex.space_stations ?? [];
const pointsOfInterest = uex.points_of_interest ?? [];
@@ -340,8 +336,7 @@ async function populateInventoryLocations(interaction) {
}
async function populateUexVehicles(interaction) {
- const pb = new PocketBase(process.env.POCKETBASE_URL);
- pb.authStore.save(process.env.POCKETBASE_AUTH_TOKEN, null);
+ const pb = await login();
const vehicles = uex.vehicles ?? [];
diff --git a/174bg/discord-bot/controllers/pocketbase.js b/174bg/discord-bot/controllers/pocketbase.js
new file mode 100644
index 0000000..b808ce4
--- /dev/null
+++ b/174bg/discord-bot/controllers/pocketbase.js
@@ -0,0 +1,22 @@
+import PocketBase from "pocketbase";
+
+const { POCKETBASE_URL, POCKETBASE_SUPERUSER_EMAIL, POCKETBASE_SUPERUSER_PASSWORD } = process.env;
+
+export async function login() {
+ const pb = new PocketBase(POCKETBASE_URL);
+ await pb.collection("_superusers").authWithPassword(POCKETBASE_SUPERUSER_EMAIL, POCKETBASE_SUPERUSER_PASSWORD);
+ return pb;
+}
+
+export async function logout(pb) {
+ await pb.authStore.clear();
+}
+
+export async function getFullList(collectionName) {
+ const pb = await login();
+ const data = await pb.collection(collectionName).getFullList();
+ await logout(pb);
+ return data;
+}
+
+export default { login, logout, getFullList } \ No newline at end of file
diff --git a/174bg/discord-bot/utilities/getUrl.js b/174bg/discord-bot/utilities/getUrl.js
index 49342d9..a6e22ef 100644
--- a/174bg/discord-bot/utilities/getUrl.js
+++ b/174bg/discord-bot/utilities/getUrl.js
@@ -1,5 +1,14 @@
export default async (url) => {
const response = await fetch(url);
+
if (!response.ok) return null;
- return await response.json();
+
+ // is it json?
+ const contentType = response.headers.get("content-type");
+ if (contentType && contentType.includes("application/json")) {
+ return await response.json();
+ }
+
+ // fallback to text
+ return await response.text();
};