59 lines
2.1 KiB
JavaScript
59 lines
2.1 KiB
JavaScript
const { SlashCommandBuilder, MessageFlags } = require('discord.js');
|
|
const config = require('../../config.json');
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName('crimenotify')
|
|
.setDescription('Options for crime level empty alerts')
|
|
.addSubcommand(subcommand =>
|
|
subcommand.setName('set')
|
|
.setDescription('Decide if a specific crime level will trigger an alert when empty')
|
|
.addIntegerOption(option =>
|
|
option.setName('level')
|
|
.setDescription('The crime level to set the alert for.')
|
|
.setRequired(true)
|
|
.setMinValue(1)
|
|
.setMaxValue(10))
|
|
.addBooleanOption(option =>
|
|
option.setName('notify')
|
|
.setDescription('Whether to notify when this crime level is empty.')
|
|
.setRequired(true))
|
|
)
|
|
.addSubcommand(subcommand =>
|
|
subcommand.setName('list')
|
|
.setDescription('List all crime levels and whether they trigger an alert when empty.')
|
|
),
|
|
async execute(interaction) {
|
|
const subcommand = interaction.options.getSubcommand();
|
|
|
|
if (subcommand === 'list') {
|
|
let message = 'Crime levels and whether they trigger an alert when empty:\n';
|
|
if (config.crimeNotify) {
|
|
for (const level in config.crimeNotify) {
|
|
message += `Crime level ${level}/10 will ${config.crimeNotify[level] ? 'notify' : 'not notify'} when empty.\n`;
|
|
}
|
|
} else {
|
|
message += 'No alert overrides set.\n';
|
|
}
|
|
await interaction.reply({ content: message, flags: MessageFlags.Ephemeral });
|
|
} else if (subcommand === 'set') {
|
|
const level = interaction.options.getInteger('level');
|
|
const notify = interaction.options.getBoolean('notify');
|
|
|
|
if (!config.crimeNotify) {
|
|
config.crimeNotify = {};
|
|
}
|
|
config.crimeNotify[level] = notify;
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
try {
|
|
fs.writeFileSync(path.join(__dirname, '../../config.json'), JSON.stringify(config, null, 2));
|
|
} catch (error) {
|
|
console.error('Failed to save config.json:', error);
|
|
}
|
|
|
|
await interaction.reply({ content: `Crime level ${level}/10 will ${notify ? 'notify' : 'not notify'} when empty.`, flags: MessageFlags.Ephemeral });
|
|
}
|
|
},
|
|
}; |