aboutsummaryrefslogtreecommitdiff
path: root/174bg
diff options
context:
space:
mode:
Diffstat (limited to '174bg')
-rw-r--r--174bg/discord-bot/Dockerfile2
-rw-r--r--174bg/discord-bot/commands/_index.js7
-rw-r--r--174bg/discord-bot/package.json6
-rw-r--r--174bg/discord-bot/source/commands/_index.js8
-rw-r--r--174bg/discord-bot/source/commands/close-ticket.js (renamed from 174bg/discord-bot/commands/close-ticket.js)0
-rw-r--r--174bg/discord-bot/source/commands/oncall-check.js (renamed from 174bg/discord-bot/commands/oncall-check.js)0
-rw-r--r--174bg/discord-bot/source/commands/requisition.js (renamed from 174bg/discord-bot/commands/requisition.js)0
-rw-r--r--174bg/discord-bot/source/commands/uex.js81
-rw-r--r--174bg/discord-bot/source/controllers/http.js (renamed from 174bg/discord-bot/controllers/http.js)2
-rw-r--r--174bg/discord-bot/source/controllers/pocketbase.js (renamed from 174bg/discord-bot/controllers/pocketbase.js)0
-rw-r--r--174bg/discord-bot/source/controllers/uex.js29
-rw-r--r--174bg/discord-bot/source/main.js (renamed from 174bg/discord-bot/main.js)50
-rw-r--r--174bg/discord-bot/source/utilities/createTicket.js (renamed from 174bg/discord-bot/utilities/createTicket.js)0
-rw-r--r--174bg/discord-bot/source/utilities/notifyRoleByName.js (renamed from 174bg/discord-bot/utilities/notifyRoleByName.js)0
14 files changed, 141 insertions, 44 deletions
diff --git a/174bg/discord-bot/Dockerfile b/174bg/discord-bot/Dockerfile
index 5bcc897..bfa512a 100644
--- a/174bg/discord-bot/Dockerfile
+++ b/174bg/discord-bot/Dockerfile
@@ -4,4 +4,4 @@ RUN apk add --no-cache git python3 make g++
COPY package*.json ./
RUN npm install
COPY . .
-CMD ["node", "main.js"] \ No newline at end of file
+CMD ["node", "source/main.js"] \ No newline at end of file
diff --git a/174bg/discord-bot/commands/_index.js b/174bg/discord-bot/commands/_index.js
deleted file mode 100644
index 2421b4d..0000000
--- a/174bg/discord-bot/commands/_index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import requisition from "./requisition.js";
-import closeTicket from "./close-ticket.js";
-import oncallCheck from "./oncall-check.js";
-
-export { requisition, closeTicket, oncallCheck };
-
-export default [requisition, closeTicket, oncallCheck];
diff --git a/174bg/discord-bot/package.json b/174bg/discord-bot/package.json
index 911e71c..849a19b 100644
--- a/174bg/discord-bot/package.json
+++ b/174bg/discord-bot/package.json
@@ -1,8 +1,8 @@
{
"scripts": {
- "start": "node main.js",
- "dev": "node --env-file=.env main.js",
- "dev:watch": "node --env-file=.env --watch main.js"
+ "start": "node source/main.js",
+ "dev": "node --env-file=.env source/main.js",
+ "dev:watch": "node --env-file=.env --watch source/main.js"
},
"dependencies": {
"@discordjs/voice": "^0.19.2",
diff --git a/174bg/discord-bot/source/commands/_index.js b/174bg/discord-bot/source/commands/_index.js
new file mode 100644
index 0000000..5fea200
--- /dev/null
+++ b/174bg/discord-bot/source/commands/_index.js
@@ -0,0 +1,8 @@
+import requisition from "./requisition.js";
+import closeTicket from "./close-ticket.js";
+import oncallCheck from "./oncall-check.js";
+import uex from "./uex.js";
+
+export { requisition, closeTicket, oncallCheck, uex };
+
+export default [requisition, closeTicket, oncallCheck, uex];
diff --git a/174bg/discord-bot/commands/close-ticket.js b/174bg/discord-bot/source/commands/close-ticket.js
index ca3040e..ca3040e 100644
--- a/174bg/discord-bot/commands/close-ticket.js
+++ b/174bg/discord-bot/source/commands/close-ticket.js
diff --git a/174bg/discord-bot/commands/oncall-check.js b/174bg/discord-bot/source/commands/oncall-check.js
index 7a3886d..7a3886d 100644
--- a/174bg/discord-bot/commands/oncall-check.js
+++ b/174bg/discord-bot/source/commands/oncall-check.js
diff --git a/174bg/discord-bot/commands/requisition.js b/174bg/discord-bot/source/commands/requisition.js
index 02c7699..02c7699 100644
--- a/174bg/discord-bot/commands/requisition.js
+++ b/174bg/discord-bot/source/commands/requisition.js
diff --git a/174bg/discord-bot/source/commands/uex.js b/174bg/discord-bot/source/commands/uex.js
new file mode 100644
index 0000000..f2f654f
--- /dev/null
+++ b/174bg/discord-bot/source/commands/uex.js
@@ -0,0 +1,81 @@
+import { SlashCommandBuilder, MessageFlags } from "discord.js";
+import { items } from "../controllers/uex.js";
+
+export default {
+ data: new SlashCommandBuilder()
+ .setName("uex")
+ .setDescription(
+ "Commands for interacting with UEX.",
+ )
+ .addSubcommandGroup((subcommandGroup) =>
+ subcommandGroup
+ .setName("lookup")
+ .setDescription("Lookup UEX information.")
+ .addSubcommand((subcommand) =>
+ subcommand
+ .setName("items")
+ .setDescription("Perform UEX lookup for Star Citizen items, including ship components, weapons, and more.")
+ .addStringOption((option) =>
+ option
+ .setName("query")
+ .setDescription(
+ "The item name or partial name to search for.",
+ )
+ .setRequired(true),
+ ),
+ )
+ ),
+ execute: async (interaction) => {
+ const subcommandGroup = interaction.options.getSubcommandGroup();
+ const subcommand = interaction.options.getSubcommand();
+
+ switch (subcommandGroup) {
+ case "lookup":
+ switch (subcommand) {
+ case "items":
+ await uex_lookup_items(interaction);
+ break;
+ default:
+ await interaction.reply({
+ content: "Unknown subcommand.",
+ ephemeral: true,
+ });
+ break;
+ }
+ break;
+ default:
+ await interaction.reply({
+ content: "Unknown subcommand group.",
+ ephemeral: true,
+ });
+ break;
+ }
+ },
+};
+
+async function uex_lookup_items(interaction) {
+ const query = interaction.options.getString("query");
+
+ await interaction.deferReply({ flags: MessageFlags.Ephemeral });
+
+ const allItems = await items();
+
+ const matchingItems = allItems.filter((item) =>
+ item.name.toLowerCase().includes(query.toLowerCase()),
+ );
+
+ if (matchingItems.length === 0) {
+ await interaction.editReply({
+ content: `No items found matching "${query}".`,
+ });
+ return;
+ }
+
+ const itemList = matchingItems
+ .map((item) => `- ${item.name} (ID: ${item.id})`)
+ .join("\n");
+
+ await interaction.editReply({
+ content: `Found ${matchingItems.length} item(s) matching "${query}":\n${itemList}`,
+ });
+} \ No newline at end of file
diff --git a/174bg/discord-bot/controllers/http.js b/174bg/discord-bot/source/controllers/http.js
index 816b73c..1472b18 100644
--- a/174bg/discord-bot/controllers/http.js
+++ b/174bg/discord-bot/source/controllers/http.js
@@ -22,4 +22,4 @@ export async function get(url) {
return await response.text();
};
-return { get }; \ No newline at end of file
+export default { get }; \ No newline at end of file
diff --git a/174bg/discord-bot/controllers/pocketbase.js b/174bg/discord-bot/source/controllers/pocketbase.js
index 4046391..4046391 100644
--- a/174bg/discord-bot/controllers/pocketbase.js
+++ b/174bg/discord-bot/source/controllers/pocketbase.js
diff --git a/174bg/discord-bot/source/controllers/uex.js b/174bg/discord-bot/source/controllers/uex.js
new file mode 100644
index 0000000..615b517
--- /dev/null
+++ b/174bg/discord-bot/source/controllers/uex.js
@@ -0,0 +1,29 @@
+import { get } from "./http.js";
+
+export async function categories() {
+ return await get("https://api.uexcorp.uk/2.0/categories");
+}
+
+export async function items(id_category) {
+ let items = [];
+
+ if (!id_category) {
+ const { data: categories } = await get("https://api.uexcorp.uk/2.0/categories");
+
+ for (const category of categories) {
+ const { data: categoryItems } = await get(`https://api.uexcorp.uk/2.0/items?id_category=${category.id}`);
+
+ if (!categoryItems) continue;
+
+ items = items.concat(categoryItems);
+ }
+ } else {
+ const { data } = await get(`https://api.uexcorp.uk/2.0/items?category=${id_category}`);
+
+ items = data;
+ }
+
+ return items;
+}
+
+export default { categories, items }; \ No newline at end of file
diff --git a/174bg/discord-bot/main.js b/174bg/discord-bot/source/main.js
index b0de475..1fcf9c1 100644
--- a/174bg/discord-bot/main.js
+++ b/174bg/discord-bot/source/main.js
@@ -11,6 +11,7 @@ import {
ButtonBuilder,
ButtonStyle,
} from "discord.js";
+
import commands from "./commands/_index.js";
const client = new Client({
@@ -24,7 +25,6 @@ client.on(Events.ClientReady, async (readyClient) => {
});
client.on(Events.InteractionCreate, async (interaction) => {
- // only respond to interactions in the specified guild
if (interaction.guild.id !== process.env.DISCORD_GUILD_ID) return;
if (interaction.isChatInputCommand()) {
@@ -42,37 +42,23 @@ client.on(Events.InteractionCreate, async (interaction) => {
client.login(process.env.DISCORD_BOT_TOKEN);
async function registerCommands() {
- try {
- const rest = new REST({ version: "10" }).setToken(
- process.env.DISCORD_BOT_TOKEN,
- );
-
- // clear global commands
- await rest.put(Routes.applicationCommands(process.env.DISCORD_CLIENT_ID), {
- body: [],
- });
-
- console.log("Cleared global application commands.");
+ const rest = new REST({ version: "10" }).setToken(
+ process.env.DISCORD_BOT_TOKEN,
+ );
- // register guild-scoped commands
- await rest.put(
- Routes.applicationGuildCommands(
- process.env.DISCORD_CLIENT_ID,
- process.env.DISCORD_GUILD_ID,
- ),
- {
- body: commands.map((command) => command.data.toJSON()),
- },
- );
+ // clear global commands
+ await rest.put(Routes.applicationCommands(process.env.DISCORD_CLIENT_ID), {
+ body: [],
+ });
- const guild = await client.guilds.fetch(process.env.DISCORD_GUILD_ID);
-
- await guild.members.fetch();
-
- console.log(
- `Successfully registered application commands for guild ${process.env.DISCORD_GUILD_ID} (${guild ? guild.name : "Unknown"}).`,
- );
- } catch (error) {
- console.error(error);
- }
+ // register guild-scoped commands
+ await rest.put(
+ Routes.applicationGuildCommands(
+ process.env.DISCORD_CLIENT_ID,
+ process.env.DISCORD_GUILD_ID,
+ ),
+ {
+ body: commands.map((command) => command.data.toJSON()),
+ },
+ );
} \ No newline at end of file
diff --git a/174bg/discord-bot/utilities/createTicket.js b/174bg/discord-bot/source/utilities/createTicket.js
index 6289715..6289715 100644
--- a/174bg/discord-bot/utilities/createTicket.js
+++ b/174bg/discord-bot/source/utilities/createTicket.js
diff --git a/174bg/discord-bot/utilities/notifyRoleByName.js b/174bg/discord-bot/source/utilities/notifyRoleByName.js
index 1b2b82a..1b2b82a 100644
--- a/174bg/discord-bot/utilities/notifyRoleByName.js
+++ b/174bg/discord-bot/source/utilities/notifyRoleByName.js