mirror of https://github.com/kry008/Bot-2.0.git
				
				
				
			Free days functions
							parent
							
								
									9112db996e
								
							
						
					
					
						commit
						58c291bdf5
					
				| 
						 | 
					@ -0,0 +1,140 @@
 | 
				
			||||||
 | 
					//https://date.nager.at/api/v3/IsTodayPublicHoliday/pl?offset=0 & https://date.nager.at/api/v3/NextPublicHolidays/country_two_letter_code
 | 
				
			||||||
 | 
					function returnFreeDay(country) {
 | 
				
			||||||
 | 
					    //if 200, return true
 | 
				
			||||||
 | 
					    //if 204, return false
 | 
				
			||||||
 | 
					    //if 400, return 'Invalid country code'
 | 
				
			||||||
 | 
					    var url = `https://date.nager.at/api/v3/IsTodayPublicHoliday/${country}`;
 | 
				
			||||||
 | 
					    return fetch(url)
 | 
				
			||||||
 | 
					        .then(response => {
 | 
				
			||||||
 | 
					            if (response.status === 200) {
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (response.status === 204) {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                return 'Invalid country code';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function returnNextFreeDay(country) {
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					    [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "date": "2024-05-30",
 | 
				
			||||||
 | 
					    "localName": "Boże Ciało",
 | 
				
			||||||
 | 
					    "name": "Corpus Christi",
 | 
				
			||||||
 | 
					    "countryCode": "PL",
 | 
				
			||||||
 | 
					    "fixed": false,
 | 
				
			||||||
 | 
					    "global": true,
 | 
				
			||||||
 | 
					    "counties": null,
 | 
				
			||||||
 | 
					    "launchYear": null,
 | 
				
			||||||
 | 
					    "types": [
 | 
				
			||||||
 | 
					      "Public"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "date": "2024-08-15",
 | 
				
			||||||
 | 
					    "localName": "Wniebowzięcie Najświętszej Maryi Panny",
 | 
				
			||||||
 | 
					    "name": "Assumption Day",
 | 
				
			||||||
 | 
					    "countryCode": "PL",
 | 
				
			||||||
 | 
					    "fixed": false,
 | 
				
			||||||
 | 
					    "global": true,
 | 
				
			||||||
 | 
					    "counties": null,
 | 
				
			||||||
 | 
					    "launchYear": null,
 | 
				
			||||||
 | 
					    "types": [
 | 
				
			||||||
 | 
					      "Public"
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {*/
 | 
				
			||||||
 | 
					  //show only 3 next holidays
 | 
				
			||||||
 | 
					    var url = `https://date.nager.at/api/v3/NextPublicHolidays/${country}`;
 | 
				
			||||||
 | 
					    return fetch(url)
 | 
				
			||||||
 | 
					        .then(response => response.json())
 | 
				
			||||||
 | 
					        .then(data => data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    name: 'freeday',
 | 
				
			||||||
 | 
					    description: 'Check if today is a public holiday in a specific country or get the next public holidays',
 | 
				
			||||||
 | 
					    help: 'Check if today is a public holiday in a specific country or get the next public holidays',
 | 
				
			||||||
 | 
					    options: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'country',
 | 
				
			||||||
 | 
					            description: 'Country to check for public holidays, 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],
 | 
				
			||||||
 | 
					    executeSlash: async interaction => {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            var toReturn = '';
 | 
				
			||||||
 | 
					            const country = interaction.options.get('country').value.toUpperCase();
 | 
				
			||||||
 | 
					            const nextFreeDay = await returnNextFreeDay(country);
 | 
				
			||||||
 | 
					            const isFreeDay = await returnFreeDay(country);
 | 
				
			||||||
 | 
					            if (nextFreeDay.length === 0) {
 | 
				
			||||||
 | 
					                interaction.reply('Invalid country code or no public holidays for the specified country.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var nextFreeDayString = 'Date \tName\n';
 | 
				
			||||||
 | 
					                nextFreeDay.slice(0, 3).forEach(holiday => {
 | 
				
			||||||
 | 
					                    nextFreeDayString += `${holiday.date} \t${holiday.name}\n`;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                toReturn += nextFreeDayString;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (isFreeDay === true) {
 | 
				
			||||||
 | 
					                toReturn += 'Today is a public holiday in the specified country.';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (isFreeDay === false) {
 | 
				
			||||||
 | 
					                toReturn += 'Today is not a public holiday in the specified country.';
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                toReturn += isFreeDay;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            interaction.reply(toReturn);
 | 
				
			||||||
 | 
					        } catch (error) {
 | 
				
			||||||
 | 
					            interaction.reply('Invalid country code or no public holidays for the specified country.');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    execute: async (message, args) => {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            const country = args[0].toUpperCase();
 | 
				
			||||||
 | 
					            const nextFreeDay = await returnNextFreeDay(country);
 | 
				
			||||||
 | 
					            if (nextFreeDay.length === 0) {
 | 
				
			||||||
 | 
					                message.channel.send('Invalid country code or no public holidays for the specified country.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var nextFreeDayString = 'Date \tName\n';
 | 
				
			||||||
 | 
					                nextFreeDay.slice(0, 3).forEach(holiday => {
 | 
				
			||||||
 | 
					                    nextFreeDayString += `${holiday.date} \t${holiday.name}\n`;
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                message.channel.send(nextFreeDayString);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            const isFreeDay = await returnFreeDay(country);
 | 
				
			||||||
 | 
					            if (isFreeDay === true) {
 | 
				
			||||||
 | 
					                message.channel.send('Today is a public holiday in the specified country.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (isFreeDay === false) {
 | 
				
			||||||
 | 
					                message.channel.send('Today is not a public holiday in the specified country.');
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                message.channel.send(isFreeDay);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        } catch (error) {
 | 
				
			||||||
 | 
					            message.channel.send('Invalid country code or no public holidays for the specified country.');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
//https://date.nager.at/api/v3/LongWeekend/year/country_two_letter_code
 | 
					//https://date.nager.at/api/v3/LongWeekend/year/country_two_letter_code 
 | 
				
			||||||
function returnLongWeekends(year, country) {
 | 
					function returnLongWeekends(year, country) {
 | 
				
			||||||
    //check if year is -1 or 0 or +1
 | 
					    //check if year is -1 or 0 or +1
 | 
				
			||||||
    var currentYear = new Date().getFullYear();
 | 
					    var currentYear = new Date().getFullYear();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue