const { REST, Routes, SlashCommandBuilder, PermissionFlagsBits } = require("discord.js"); require("dotenv").config(); const commands = [ new SlashCommandBuilder() .setName("ping") .setDescription("Replies with Pong!"), new SlashCommandBuilder() .setName("finduser") .setDescription("Find a user by username") .addStringOption((option) => option .setName("game") .setDescription("Select the game") .setRequired(true) .addChoices( { name: "Big Ballers VR", value: "Big Ballers VR" }, { name: "Blacktop Hoops", value: "Blacktop Hoops" }, { name: "Breachers", value: "Breachers" }, { name: "Echo Arena", value: "Echo Arena" }, { name: "Echo Combat", value: "Echo Combat" }, { name: "Gun Raiders", value: "Gun Raiders" }, { name: "Nock", value: "Nock" }, { name: "VAIL", value: "VAIL" } ) ) .addStringOption((option) => option .setName("username") .setDescription("The username to search for") .setRequired(true) ), new SlashCommandBuilder() .setName("matchhistory") .setDescription("View match history") .addStringOption((option) => option .setName("username") .setDescription("The username to search for") .setRequired(true) ) .addStringOption((option) => option.setName("game").setDescription("Filter by game").setRequired(false) ), new SlashCommandBuilder() .setName("subscribe") .setDescription("Subscribe to game notifications") .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .addStringOption((option) => option .setName("game") .setDescription("Game to subscribe to") .setRequired(true) .addChoices( { name: "Big Ballers VR", value: "Big Ballers VR" }, { name: "Blacktop Hoops", value: "Blacktop Hoops" }, { name: "Breachers", value: "Breachers" }, { name: "Echo Arena", value: "Echo Arena" }, { name: "Echo Combat", value: "Echo Combat" }, { name: "Gun Raiders", value: "Gun Raiders" }, { name: "Nock", value: "Nock" }, { name: "VAIL", value: "VAIL" } ) ) .addChannelOption((option) => option .setName("channel") .setDescription("Channel for notifications") .setRequired(true) ), new SlashCommandBuilder() .setName("unsubscribe") .setDescription("Unsubscribe from game notifications") .setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .addStringOption((option) => option .setName("game") .setDescription("Game to unsubscribe from") .setRequired(true) .addChoices( { name: "Big Ballers VR", value: "Big Ballers VR" }, { name: "Blacktop Hoops", value: "Blacktop Hoops" }, { name: "Breachers", value: "Breachers" }, { name: "Echo Arena", value: "Echo Arena" }, { name: "Echo Combat", value: "Echo Combat" }, { name: "Gun Raiders", value: "Gun Raiders" }, { name: "Nock", value: "Nock" }, { name: "VAIL", value: "VAIL" } ) ), new SlashCommandBuilder() .setName("register_server") .setDescription("Register this Discord server with BattleBot") .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), new SlashCommandBuilder() .setName("list_subscriptions") .setDescription("List all game subscriptions for this server") .setDefaultMemberPermissions(PermissionFlagsBits.Administrator), new SlashCommandBuilder() .setName("findteam") .setDescription("Find a team by name") .addStringOption((option) => option .setName("game") .setDescription("Select the game") .setRequired(true) .addChoices( { name: "Big Ballers VR", value: "Big Ballers VR" }, { name: "Blacktop Hoops", value: "Blacktop Hoops" }, { name: "Breachers", value: "Breachers" }, { name: "Echo Arena", value: "Echo Arena" }, { name: "Echo Combat", value: "Echo Combat" }, { name: "Gun Raiders", value: "Gun Raiders" }, { name: "Nock", value: "Nock" }, { name: "VAIL", value: "VAIL" } ) ) .addStringOption((option) => option .setName("teamname") .setDescription("The team name to search for") .setRequired(true) ), ]; const rest = new REST({ version: "10" }).setToken(process.env.DISCORD_TOKEN); (async () => { try { console.log("Started refreshing application (/) commands."); console.log( "Commands to be deployed:", commands.map((cmd) => cmd.name) ); await rest.put(Routes.applicationCommands(process.env.CLIENT_ID), { body: commands.map((command) => command.toJSON()), }); console.log("Successfully reloaded application (/) commands."); } catch (error) { console.error(error); } })();