diff --git a/commands/debug.js b/commands/debug.js index da5a561..752a814 100644 --- a/commands/debug.js +++ b/commands/debug.js @@ -20,6 +20,7 @@ module.exports = { { name: 'bot', value: 'bot' }, { name: 'reset_cd', value: 'reset_cd' }, { name: 'add_xp', value: 'add_xp' }, + { name: 'toggle_maintenance', value: 'toggle_maintenance' }, ) ) .addStringOption((option) => @@ -111,6 +112,14 @@ module.exports = { ephemeral: false }); break; + case "toggle_maintenance": + let maintenance = await GeneralUtils.getBotProperty("maintenance"); + await GeneralUtils.setBotProperty("maintenance", !maintenance); + interaction.reply({ + content: `Maintenance mode is now ${!maintenance}`, + ephemeral: false + }); + break; default: interaction.reply({ content: `Your permission level is ${await UserUtils.getPermissionLevel(interaction.member)}`, diff --git a/events/interactionCreate.js b/events/interactionCreate.js index b39125e..0f21f26 100644 --- a/events/interactionCreate.js +++ b/events/interactionCreate.js @@ -2,11 +2,18 @@ require("dotenv").config(); const { REST } = require("@discordjs/rest"); const { Routes } = require("discord-api-types/v10") const { Guild, User } = require("../models"); -const { UserUtils } = require("../util"); +const { UserUtils, GeneralUtils } = require("../util"); module.exports = { name: "interactionCreate", async execute (interaction) { + let isMaintenance = await GeneralUtils.getBotProperty("maintenance"); + let permissionLevel = await UserUtils.getPermissionLevel(interaction.member); + + if (isMaintenance && permissionLevel < 2) { + return interaction.reply({ content: "The bot is currently undergoing maintenance. Please try again later.", ephemeral: true }); + } + let isRegistered = await UserUtils.registrationCheck(interaction); if (!isRegistered) return; console.log("User is registered"); @@ -41,7 +48,6 @@ module.exports = { //check if user has permissions to run the command //TODO: pass down this user object to avoid duplicate queries let user = await UserUtils.getUserByDiscordId(interaction.member.id); - let permissionLevel = await UserUtils.getPermissionLevel(interaction.member); if (command.permissionLevel > permissionLevel) { interaction.reply({ content: `You do not have permission to run this command`,