Bot-2.0/commands/longweekends.js

93 lines
3.6 KiB
JavaScript

//https://date.nager.at/api/v3/LongWeekend/year/country_two_letter_code
function returnLongWeekends(year, country) {
//check if year is -1 or 0 or +1
var currentYear = new Date().getFullYear();
if (year < currentYear - 1 || year > currentYear + 1) {
return 'Invalid year, you can only check for the **current year, previous year or next year.**';
}
return fetch(`https://date.nager.at/api/v3/LongWeekend/${year}/${country}`)
.then(response => response.json())
.then(data => data);
}
module.exports = {
name: 'longweekends',
description: 'Get long weekends for a specific year and country',
help: 'Get long weekends for a specific year and country',
options: [
{
name: 'year',
description: 'Year to check for long weekends',
type: 4,
required: true,
},
{
name: 'country',
description: 'Country to check for long weekends, two letter code e.g. US, GB, CA, DE, FR, etc.',
type: 3,
required: true,
},
],
slash: true,
text: true,
admin: false,
requireKick: false,
requireBan: false,
canBeUsedInDm: true,
premium: false,
contexts: ['GUILD_TEXT', 'GUILD_VOICE', 'DM'],
integration_types: [0, 1],
execute: async (message, args) => {
try {
const year = args[0];
const country = args[1].toUpperCase();
const longWeekends = await returnLongWeekends(year, country);
if (longWeekends.length === 0) {
interaction.reply('Invalid country code or no long weekends for the specified year and country.');
}
else
{
if (typeof longWeekends === 'string') {
message.channel.send(longWeekends);
}
else {
var longWeekendsString = 'Start Date \tEnd Date \t\tDay Count\n';
longWeekends.forEach(weekend => {
longWeekendsString += `${weekend.startDate} \t${weekend.endDate} \t\t${weekend.dayCount}\n`;
});
message.channel.send(longWeekendsString);
}
}
} catch (error) {
message.channel.send('Invalid country code or no long weekends for the specified year and country.');
}
},
executeSlash: async interaction => {
try {
const year = interaction.options.get('year').value;
const country = interaction.options.get('country').value.toUpperCase();
const longWeekends = await returnLongWeekends(year, country);
//if 0, write wrong contry or no long weekends
if (longWeekends.length === 0) {
interaction.reply('Invalid country code or no long weekends for the specified year and country.');
}
else
{
if (typeof longWeekends === 'string') {
interaction.reply(longWeekends);
}
else {
var longWeekendsString = 'Start Date \tEnd Date \t\tDay Count\n';
longWeekends.forEach(weekend => {
longWeekendsString += `${weekend.startDate} \t${weekend.endDate} \t\t${weekend.dayCount}\n`;
});
interaction.reply(longWeekendsString);
}
}
} catch (error) {
interaction.reply('Invalid country code or no long weekends for the specified year and country.');
}
},
};