diff options
Diffstat (limited to '174bg/discord-bot')
| -rw-r--r-- | 174bg/discord-bot/Dockerfile | 2 | ||||
| -rw-r--r-- | 174bg/discord-bot/commands/_index.js | 7 | ||||
| -rw-r--r-- | 174bg/discord-bot/package.json | 6 | ||||
| -rw-r--r-- | 174bg/discord-bot/source/commands/_index.js | 8 | ||||
| -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.js | 81 | ||||
| -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.js | 29 | ||||
| -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 |
