597 lines
25 KiB
JavaScript
597 lines
25 KiB
JavaScript
![]() |
const { SlashCommandBuilder } = require('@discordjs/builders');
|
||
|
const { MessageEmbed } = require('discord.js');
|
||
|
const help = require('../helpFunctions.js');
|
||
|
const PATH = './database/events.json';
|
||
|
const eventsJSON = require('../database/events.json');
|
||
|
const { writeToFile } = require('../helpFunctions.js');
|
||
|
|
||
|
module.exports = {
|
||
|
data: new SlashCommandBuilder()
|
||
|
.setName('event')
|
||
|
.setDescription('Adds events to celebrate!')
|
||
|
.addSubcommand(subcommand =>
|
||
|
subcommand.setName('add')
|
||
|
.setDescription('Adds new event to the database')
|
||
|
.addStringOption(option => option.setName('name')
|
||
|
.setDescription('Name of the event you want to add')
|
||
|
.setRequired(true))
|
||
|
.addIntegerOption(option =>
|
||
|
option.setName('day')
|
||
|
.setDescription('Day of event')
|
||
|
.setRequired(true))
|
||
|
.addIntegerOption(option =>
|
||
|
option.setName('month')
|
||
|
.setDescription('Month of event')
|
||
|
.setRequired(true))
|
||
|
.addBooleanOption(option =>
|
||
|
option.setName('global')
|
||
|
.setDescription('Should this event display on all servers?')))
|
||
|
.addSubcommand(subcommand =>
|
||
|
subcommand.setName('delete')
|
||
|
.setDescription('Deletes event from database')
|
||
|
.addStringOption(option => option.setName('name')
|
||
|
.setDescription('Name of the event you want to delete'))
|
||
|
.addIntegerOption(option => option.setName('id')
|
||
|
.setDescription('Id of the even you want to change')))
|
||
|
.addSubcommandGroup(subcommandGroup =>
|
||
|
subcommandGroup.setName('change')
|
||
|
.setDescription('Change the event entry')
|
||
|
.addSubcommand(subcommand =>
|
||
|
subcommand.setName('date')
|
||
|
.setDescription('Change date of an event')
|
||
|
.addIntegerOption(option =>
|
||
|
option.setName('day')
|
||
|
.setDescription('New event day')
|
||
|
.setRequired(true))
|
||
|
.addIntegerOption(option =>
|
||
|
option.setName('month')
|
||
|
.setDescription('New event month')
|
||
|
.setRequired(true))
|
||
|
.addIntegerOption(option => option.setName('id')
|
||
|
.setDescription('Id of the even you want to change'))
|
||
|
.addStringOption(option => option.setName('name')
|
||
|
.setDescription('Name of the event you want to change')))
|
||
|
.addSubcommand(subcommand =>
|
||
|
subcommand.setName('name')
|
||
|
.setDescription('Change name of an event')
|
||
|
.addStringOption(option =>
|
||
|
option.setName('new-name')
|
||
|
.setDescription('New name of the event')
|
||
|
.setRequired(true))
|
||
|
.addIntegerOption(option => option.setName('id')
|
||
|
.setDescription('Id of the even you want to change'))
|
||
|
.addStringOption(option => option.setName('name')
|
||
|
.setDescription('Name of the event you want to change'))))
|
||
|
.addSubcommand(subcommand =>
|
||
|
subcommand.setName('list')
|
||
|
.setDescription('List all events')),
|
||
|
async execute(interaction) {
|
||
|
// make this help function you basically copy it evrytime (in birthday.js aswell)
|
||
|
const error = catchErrors(interaction.options);
|
||
|
if (error != null) {
|
||
|
await interaction.reply(error);
|
||
|
}
|
||
|
let subcommandGroup;
|
||
|
try {
|
||
|
subcommandGroup = interaction.options.getSubcommandGroup();
|
||
|
}
|
||
|
catch {
|
||
|
subcommandGroup = undefined;
|
||
|
}
|
||
|
const subcommand = interaction.options.getSubcommand();
|
||
|
const key = idOrName(interaction.options);
|
||
|
if (subcommandGroup == undefined) {
|
||
|
switch (subcommand) {
|
||
|
case 'list':
|
||
|
await interaction.reply({ embeds: [listEvents(interaction)] });
|
||
|
break;
|
||
|
case 'add':
|
||
|
await interaction.reply(addEvent(interaction));
|
||
|
break;
|
||
|
case 'delete':
|
||
|
await interaction.reply(deleteEvent(interaction, key));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
switch (subcommand) {
|
||
|
case 'date':
|
||
|
await interaction.reply(changeEventDate(interaction, key));
|
||
|
break;
|
||
|
case 'name':
|
||
|
await interaction.reply(changeEventName(interaction, key));
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
};
|
||
|
|
||
|
// TODO add event GLOBAL
|
||
|
// TODO add event local
|
||
|
// if the guild isnt there add it
|
||
|
|
||
|
|
||
|
function changeEventDate(interaction, key) {
|
||
|
if (key == null) {
|
||
|
return 'I need id or name of the event you want to edit';
|
||
|
}
|
||
|
const newDay = interaction.options.getInteger('day');
|
||
|
const newMonth = interaction.options.getInteger('month');
|
||
|
// TODO deduplicate
|
||
|
if (!isNaN(key)) {
|
||
|
const id = parseFloat(key);
|
||
|
if (id % 10 == 0) {
|
||
|
let globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
if (globalEvents[i].id == id) {
|
||
|
const prevDay = globalEvents[i].day;
|
||
|
const prevMonth = globalEvents[i].month;
|
||
|
let fstPart = globalEvents.slice(0, i);
|
||
|
let sndPart = globalEvents.slice(i + 1);
|
||
|
globalEvents = fstPart.concat(sndPart);
|
||
|
|
||
|
for (let j = 0; j < globalEvents.length; j++) {
|
||
|
if ((newMonth == globalEvents[i].month && newDay >= globalEvents.day)
|
||
|
|| newMonth < globalEvents[i].month) {
|
||
|
fstPart = globalEvents.slice(0, j);
|
||
|
fstPart.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
sndPart = globalEvents.slice(j + 1);
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed global event ${name} date ` +
|
||
|
`from ${prevDay}. ${prevMonth}. ` +
|
||
|
`to ${newDay}. ${newMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
globalEvents.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
eventsJSON.global = globalEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed global event ${name} date ` +
|
||
|
`from ${prevDay}. ${prevMonth}. ` +
|
||
|
`to ${newDay}. ${newMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
if (guildEvents[i].id == id) {
|
||
|
const prevDay = guildEvents[i].day;
|
||
|
const prevMonth = guildEvents[i].month;
|
||
|
let fstPart = guildEvents.slice(0, i);
|
||
|
let sndPart = guildEvents.slice(i + 1);
|
||
|
for (let j = 0; j < guildEvents.length; j++) {
|
||
|
if ((newMonth == guildEvents[i].month &&
|
||
|
newDay >= guildEvents.day) ||
|
||
|
newMonth < guildEvents[i].month) {
|
||
|
fstPart = guildEvents.slice(0, j);
|
||
|
fstPart.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
sndPart = guildEvents.slice(j + 1);
|
||
|
eventsJSON[interaction.guild.id] = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed guild event ${name} date ` +
|
||
|
`from ${prevDay}. ${prevMonth}. ` +
|
||
|
`to ${newDay}. ${newMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
guildEvents.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
eventsJSON.global = guildEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed guild event ${name} date ` +
|
||
|
`from ${prevDay}. ${prevMonth}. ` +
|
||
|
`to ${newDay}. ${newMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
let globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
const id = globalEvents[i].id;
|
||
|
if (globalEvents[i].name == name) {
|
||
|
const prevDay = globalEvents[i].day;
|
||
|
const prevMonth = globalEvents[i].month;
|
||
|
let fstPart = globalEvents.slice(0, i);
|
||
|
let sndPart = globalEvents.slice(i + 1);
|
||
|
globalEvents = fstPart.concat(sndPart);
|
||
|
|
||
|
for (let j = 0; j < globalEvents.length; j++) {
|
||
|
if ((newMonth == globalEvents[i].month && newDay >= globalEvents.day)
|
||
|
|| newMonth < globalEvents[i].month) {
|
||
|
fstPart = globalEvents.slice(0, j);
|
||
|
fstPart.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
sndPart = globalEvents.slice(j);
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed global event ${name}` +
|
||
|
` date from ${prevDay}. ${prevMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
const id = globalEvents[i].id;
|
||
|
if (guildEvents[i].name == name) {
|
||
|
const prevDay = guildEvents[i].day;
|
||
|
const prevMonth = guildEvents[i].month;
|
||
|
let fstPart = guildEvents.slice(0, i);
|
||
|
let sndPart = guildEvents.slice(i + 1);
|
||
|
for (let j = 0; j < guildEvents.length; j++) {
|
||
|
if ((newMonth == guildEvents[i].month &&
|
||
|
newDay >= guildEvents.day) ||
|
||
|
newMonth < guildEvents[i].month) {
|
||
|
fstPart = guildEvents.slice(0, j);
|
||
|
fstPart.push({ id: id, name: name, day: newDay, month: newMonth });
|
||
|
sndPart = guildEvents.slice(j);
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
eventsJSON[interaction.guild.id] = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly changed guild event ${name} date` +
|
||
|
` from ${prevDay}. ${prevMonth}.`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return 'There was an error (probably entered wrong id/name)';
|
||
|
}
|
||
|
|
||
|
function changeEventName(interaction, key) {
|
||
|
if (key == null) {
|
||
|
return 'I need id or name of the event you want to edit';
|
||
|
}
|
||
|
// TODO deduplicate
|
||
|
if (!isNaN(key)) {
|
||
|
const id = parseFloat(key);
|
||
|
if (id % 10 == 0) {
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
if (globalEvents[i].id == id) {
|
||
|
globalEvents[i].name = interaction.options.getString('name');
|
||
|
eventsJSON.global = globalEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return 'Successfuly changed name of global event' +
|
||
|
`${name} to ${interaction.options.getString('name')}`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
if (guildEvents[i].id == id) {
|
||
|
guildEvents[i].name = interaction.options.getString('name');
|
||
|
eventsJSON[interaction.guild.id] = guildEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return 'Successfuly changed name of guild event' +
|
||
|
`${name} to ${interaction.options.getString('name')}`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
if (name == key) {
|
||
|
globalEvents[i].name = interaction.options.getString('name');
|
||
|
eventsJSON.global = globalEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return 'Successfuly changed name of global event' +
|
||
|
`${name} to ${interaction.options.getString('name')}`;
|
||
|
}
|
||
|
}
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
if (name == key) {
|
||
|
guildEvents[i].name = interaction.options.getString('name');
|
||
|
eventsJSON[interaction.guild.id] = guildEvents;
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return 'Successfuly changed name of guild event' +
|
||
|
`${name} to ${interaction.options.getString('name')}`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return 'There was an error (probably entered wrong id/name)';
|
||
|
}
|
||
|
|
||
|
function deleteEvent(interaction, key) {
|
||
|
if (key == null) {
|
||
|
return 'I need id or name of the event you want to delete';
|
||
|
}
|
||
|
// TODO deduplicate
|
||
|
if (!isNaN(key)) {
|
||
|
const id = parseFloat(key);
|
||
|
if (id % 10 == 0) {
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
if (globalEvents[i].id == id) {
|
||
|
const fstPart = globalEvents.slice(0, i);
|
||
|
const sndPart = globalEvents.slice(i + 1);
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly deleted global event ${name} from database`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
if (guildEvents[i].id == id) {
|
||
|
const fstPart = guildEvents.slice(0, i);
|
||
|
const sndPart = guildEvents.slice(i + 1);
|
||
|
eventsJSON[interaction.guild.id] = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly deleted guild event ${name} from database`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
const name = guildEvents[i].name;
|
||
|
if (name == key) {
|
||
|
const fstPart = guildEvents.slice(0, i);
|
||
|
const sndPart = guildEvents.slice(i + 1);
|
||
|
eventsJSON[interaction.guild.id] = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly deleted guild event ${name} from database`;
|
||
|
}
|
||
|
}
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
const name = globalEvents[i].name;
|
||
|
if (name == key) {
|
||
|
const fstPart = globalEvents.slice(0, i);
|
||
|
const sndPart = globalEvents.slice(i + 1);
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
const error = writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return error;
|
||
|
}
|
||
|
return `Successfuly deleted global event ${name} from database`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return 'There was an error (probably entered wrong id/name)';
|
||
|
}
|
||
|
|
||
|
function addEvent(interaction) {
|
||
|
const name = interaction.options.getString('name');
|
||
|
const day = interaction.options.getInteger('day');
|
||
|
const month = interaction.options.getInteger('month');
|
||
|
|
||
|
let isGlobal;
|
||
|
try {
|
||
|
isGlobal = interaction.options.getBoolean('global');
|
||
|
}
|
||
|
catch {
|
||
|
isGlobal = false;
|
||
|
}
|
||
|
// TODO if duplicate send if they want to add it anyway and 2 buttons yes/no
|
||
|
|
||
|
const ms = new Date().getMilliseconds();
|
||
|
let id = (100000 * day) + (100 * (ms % 1000)) + (month * 10);
|
||
|
|
||
|
if (isGlobal) {
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
// TODO make this help function you basically copy it evrytime (in birthday.js aswell)
|
||
|
if ((globalEvents[i].month == month && globalEvents[i].day >= day) || globalEvents[i].month > month) {
|
||
|
const fstPart = globalEvents.slice(0, i);
|
||
|
const sndPart = globalEvents.slice(i);
|
||
|
fstPart.push({ id: id, name: name, day: day, month: month });
|
||
|
eventsJSON.global = fstPart.concat(sndPart);
|
||
|
const error = help.writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return 'There was an error while updating event list';
|
||
|
}
|
||
|
return `Successfuly added global event ${name} to event list`;
|
||
|
}
|
||
|
}
|
||
|
globalEvents.push({ id: id, name: name, day: day, month: month });
|
||
|
eventsJSON.global = globalEvents;
|
||
|
const error = help.writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return 'There was an error while updating event list';
|
||
|
}
|
||
|
return `Successfuly added guild event ${name} to event list`;
|
||
|
}
|
||
|
else {
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
id++;
|
||
|
if (guildEvents == undefined) {
|
||
|
eventsJSON[interaction.guild.id] = [{ id: id, name: name, day: day, month: month }];
|
||
|
const error = help.writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return 'There was an error while updating event list';
|
||
|
}
|
||
|
return `Successfuly added guild event ${name} to event list`;
|
||
|
}
|
||
|
else {
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
if ((guildEvents[i].month == month && guildEvents[i].day >= day) || guildEvents[i].month > month) {
|
||
|
const fstPart = guildEvents.slice(0, i);
|
||
|
const sndPart = guildEvents.slice(i);
|
||
|
fstPart.push({ id: id, name: name, day: day, month: month });
|
||
|
eventsJSON[interaction.guild.id] = fstPart.concat(sndPart);
|
||
|
const error = help.writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return 'There was an error while updating event list';
|
||
|
}
|
||
|
return `Successfuly added guild event ${name} to event list`;
|
||
|
}
|
||
|
}
|
||
|
guildEvents.push({ id: id, name: name, day: day, month: month });
|
||
|
eventsJSON[interaction.guild.id] = guildEvents;
|
||
|
const error = help.writeToFile(eventsJSON, PATH);
|
||
|
if (error != null) {
|
||
|
return 'There was an error while updating event list';
|
||
|
}
|
||
|
return `Successfuly added guild event ${name} to event list`;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function listEvents(interaction) {
|
||
|
const embed = new MessageEmbed()
|
||
|
.setColor(help.randomColor())
|
||
|
.setTitle('Literally nothing here');
|
||
|
|
||
|
let eventIds = [];
|
||
|
let eventNames = [];
|
||
|
let eventDates = [];
|
||
|
const globalEvents = eventsJSON.global;
|
||
|
// TODO deduplicate
|
||
|
if (globalEvents != undefined && globalEvents.length > 0) {
|
||
|
embed.addField('Global events:', '\u200b')
|
||
|
.setTitle('');
|
||
|
for (let i = 0; i < globalEvents.length; i++) {
|
||
|
eventIds.push(globalEvents[i].id);
|
||
|
eventNames.push(globalEvents[i].name);
|
||
|
eventDates.push(`${globalEvents[i].day}. ${globalEvents[i].month}.`);
|
||
|
}
|
||
|
embed.addField('Id: ', eventIds.join('\n'), true);
|
||
|
embed.addField('Name: ', eventNames.join('\n'), true);
|
||
|
embed.addField('Date: ', eventDates.join('\n'), true);
|
||
|
embed.addField('\u200b', '\u200b');
|
||
|
}
|
||
|
|
||
|
const guildEvents = eventsJSON[interaction.guild.id];
|
||
|
if (guildEvents != undefined && guildEvents.length > 0) {
|
||
|
eventIds = [];
|
||
|
eventNames = [];
|
||
|
eventDates = [];
|
||
|
embed.addField('Guild events:', '\u200b')
|
||
|
.setTitle('');
|
||
|
for (let i = 0; i < guildEvents.length; i++) {
|
||
|
eventIds.push(guildEvents[i].id);
|
||
|
eventNames.push(guildEvents[i].name);
|
||
|
eventDates.push(`${guildEvents[i].day}. ${guildEvents[i].month}.`);
|
||
|
}
|
||
|
embed.addField('Id: ', eventIds.join('\n'), true);
|
||
|
embed.addField('Name: ', eventNames.join('\n'), true);
|
||
|
embed.addField('Date: ', eventDates.join('\n'), true);
|
||
|
}
|
||
|
return embed;
|
||
|
}
|
||
|
|
||
|
function idOrName(options) {
|
||
|
let id;
|
||
|
try {
|
||
|
id = options.getInteger('id');
|
||
|
}
|
||
|
catch {
|
||
|
id = undefined;
|
||
|
}
|
||
|
if (id == undefined) {
|
||
|
let name;
|
||
|
try {
|
||
|
name = options.getString('name');
|
||
|
}
|
||
|
catch {
|
||
|
name = undefined;
|
||
|
}
|
||
|
if (name == undefined) {
|
||
|
return null;
|
||
|
}
|
||
|
return name;
|
||
|
}
|
||
|
return id;
|
||
|
}
|
||
|
|
||
|
function catchErrors(options) {
|
||
|
const month = options.getInteger('month');
|
||
|
const day = options.getInteger('day');
|
||
|
if (month == null || day == null) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
if (month > 12 || month < 1) {
|
||
|
return 'Bruh, "month" kinda poopy';
|
||
|
}
|
||
|
if (day > checkMonth(month) || day < 1) {
|
||
|
return 'Bruh, "day" kinda poopy';
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
function checkMonth(month) {
|
||
|
switch (month) {
|
||
|
case 1:
|
||
|
return 31;
|
||
|
case 2:
|
||
|
return 29;
|
||
|
case 3:
|
||
|
return 31;
|
||
|
case 4:
|
||
|
return 30;
|
||
|
case 5:
|
||
|
return 31;
|
||
|
case 6:
|
||
|
return 30;
|
||
|
case 7:
|
||
|
return 31;
|
||
|
case 8:
|
||
|
return 31;
|
||
|
case 9:
|
||
|
return 30;
|
||
|
case 10:
|
||
|
return 31;
|
||
|
case 11:
|
||
|
return 30;
|
||
|
case 12:
|
||
|
return 31;
|
||
|
}
|
||
|
}
|