forked from SwitchbladeBot/switchblade
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request SwitchbladeBot#991 from fernandopiniani/dev
Add holidays command
- Loading branch information
Showing
4 changed files
with
332 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
const { Command, CommandError, SwitchbladeEmbed } = require('../../') | ||
const moment = require('moment') | ||
const fetch = require('node-fetch') | ||
|
||
const supportedCountries = [ | ||
'AD', 'AL', 'AR', 'AT', 'AU', 'AX', 'BB', 'BE', 'BG', 'BJ', 'BO', 'BR', | ||
'BS', 'BW', 'BY', 'BZ', 'CA', 'CH', 'CL', 'CN', 'CO', 'CR', 'CU', 'CY', | ||
'CZ', 'DE', 'DK', 'DO', 'EC', 'EE', 'EG', 'ES', 'FI', 'FO', 'FR', 'GA', | ||
'GB', 'GD', 'GL', 'GM', 'GR', 'GT', 'GY', 'HN', 'HR', 'HT', 'HU', 'ID', | ||
'IE', 'IM', 'IS', 'IT', 'JE', 'JM', 'JP', 'LI', 'LS', 'LT', 'LU', 'LV', | ||
'MA', 'MC', 'MD', 'MG', 'MK', 'MN', 'MT', 'MX', 'MZ', 'NA', 'NE', 'NI', | ||
'NL', 'NO', 'NZ', 'PA', 'PE', 'PL', 'PR', 'PT', 'PY', 'RO', 'RS', 'RU', | ||
'SE', 'SI', 'SJ', 'SK', 'SM', 'SR', 'SV', 'TN', 'TR', 'UA', 'US', 'UY', | ||
'VA', 'VE', 'VN', 'ZA', 'ZW' | ||
] | ||
|
||
module.exports = class Holidays extends Command { | ||
constructor (client) { | ||
super(client, { | ||
name: 'holidays', | ||
category: 'utility', | ||
parameters: [{ | ||
type: 'string', | ||
whitelist: supportedCountries, | ||
missingError: ({ t }) => { | ||
return new SwitchbladeEmbed() | ||
.setTitle(t('commands:holidays.invalidCountry')) | ||
.setDescription(supportedCountries | ||
.map(countryCode => { | ||
const countryName = t(`countries:${countryCode}`) | ||
return `${countryCode} - ${countryName}` | ||
} | ||
).join('\n') | ||
) | ||
} | ||
}, { | ||
type: 'number', | ||
required: false, | ||
min: 0 | ||
}] | ||
}) | ||
} | ||
|
||
async run ({ t, author, channel }, countryCode = '', year = moment().year()) { | ||
try { | ||
channel.startTyping() | ||
const embed = new SwitchbladeEmbed(author) | ||
const countryName = t(`countries:${countryCode.toUpperCase()}`) | ||
const url = `https://date.nager.at/api/v2/publicholidays/${year}/${countryCode}` | ||
const holidays = await fetch(url) | ||
.then(res => res.json()) | ||
.catch(e => { | ||
throw new CommandError(t('commands:holidays.noInformation'), true) | ||
}) | ||
|
||
if (holidays) { | ||
channel.send(embed | ||
.setTitle(t('commands:holidays.title', { countryName, year })) | ||
.setDescription(holidays | ||
.map(({ date, localName }) => | ||
`**${moment(date).format('Do MMMM')}** ${localName}` | ||
).join('\n') | ||
) | ||
) | ||
} | ||
} catch (e) { | ||
throw new CommandError(t('commons:error'), true) | ||
} finally { | ||
channel.stopTyping() | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,251 @@ | ||
{ | ||
"AD": "Andorra", | ||
"AE": "United Arab Emirates", | ||
"AF": "Afghanistan", | ||
"AG": "Antigua and Barbuda", | ||
"AI": "Anguilla", | ||
"AL": "Albania", | ||
"AM": "Armenia", | ||
"AO": "Angola", | ||
"AQ": "Antarctica", | ||
"AR": "Argentina", | ||
"AS": "American Samoa", | ||
"AT": "Austria", | ||
"AU": "Australia", | ||
"AW": "Aruba", | ||
"AX": "Åland Islands", | ||
"AZ": "Azerbaijan", | ||
"BA": "Bosnia and Herzegovina", | ||
"BB": "Barbados", | ||
"BD": "Bangladesh", | ||
"BE": "Belgium", | ||
"BF": "Burkina Faso", | ||
"BG": "Bulgaria", | ||
"BH": "Bahrain", | ||
"BI": "Burundi", | ||
"BJ": "Benin", | ||
"BL": "Saint Barthélemy", | ||
"BM": "Bermuda", | ||
"BN": "Brunei Darussalam", | ||
"BO": "Bolivia", | ||
"BQ": "Bonaire", | ||
"BR": "Brazil", | ||
"BS": "Bahamas", | ||
"BT": "Bhutan", | ||
"BV": "Bouvet Island", | ||
"BW": "Botswana", | ||
"BY": "Belarus", | ||
"BZ": "Belize", | ||
"CA": "Canada", | ||
"CC": "Cocos Islands", | ||
"CD": "Democratic Republic of the Congo", | ||
"CF": "Central African Republic", | ||
"CG": "Congo", | ||
"CH": "Switzerland", | ||
"CI": "Côte d'Ivoire", | ||
"CK": "Cook Islands", | ||
"CL": "Chile", | ||
"CM": "Cameroon", | ||
"CN": "China", | ||
"CO": "Colombia", | ||
"CR": "Costa Rica", | ||
"CU": "Cuba", | ||
"CV": "Cabo Verde", | ||
"CW": "Curaçao", | ||
"CX": "Christmas Island", | ||
"CY": "Cyprus", | ||
"CZ": "Czechia", | ||
"DE": "Germany", | ||
"DJ": "Djibouti", | ||
"DK": "Denmark", | ||
"DM": "Dominica", | ||
"DO": "Dominican Republic", | ||
"DZ": "Algeria", | ||
"EC": "Ecuador", | ||
"EE": "Estonia", | ||
"EG": "Egypt", | ||
"EH": "Western Sahara", | ||
"ER": "Eritrea", | ||
"ES": "Spain", | ||
"ET": "Ethiopia", | ||
"FI": "Finland", | ||
"FJ": "Fiji", | ||
"FK": "Falkland Islands (Malvinas)", | ||
"FM": "Federated States of Micronesia", | ||
"FO": "Faroe Islands", | ||
"FR": "France", | ||
"GA": "Gabon", | ||
"GB": "United Kingdom", | ||
"GD": "Grenada", | ||
"GE": "Georgia", | ||
"GF": "French Guiana", | ||
"GG": "Guernsey", | ||
"GH": "Ghana", | ||
"GI": "Gibraltar", | ||
"GL": "Greenland", | ||
"GM": "Gambia", | ||
"GN": "Guinea", | ||
"GP": "Guadeloupe", | ||
"GQ": "Equatorial Guinea", | ||
"GR": "Greece", | ||
"GS": "South Georgia and the South Sandwich Islands", | ||
"GT": "Guatemala", | ||
"GU": "Guam", | ||
"GW": "Guinea-Bissau", | ||
"GY": "Guyana", | ||
"HK": "Hong Kong", | ||
"HM": "Heard Island and McDonald Islands", | ||
"HN": "Honduras", | ||
"HR": "Croatia", | ||
"HT": "Haiti", | ||
"HU": "Hungary", | ||
"ID": "Indonesia", | ||
"IE": "Ireland", | ||
"IL": "Israel", | ||
"IM": "Isle of Man", | ||
"IN": "India", | ||
"IO": "British Indian Ocean Territory", | ||
"IQ": "Iraq", | ||
"IR": "Islamic Republic of Iran", | ||
"IS": "Iceland", | ||
"IT": "Italy", | ||
"JE": "Jersey", | ||
"JM": "Jamaica", | ||
"JO": "Jordan", | ||
"JP": "Japan", | ||
"KE": "Kenya", | ||
"KG": "Kyrgyzstan", | ||
"KH": "Cambodia", | ||
"KI": "Kiribati", | ||
"KM": "Comoros", | ||
"KN": "Saint Kitts and Nevis", | ||
"KP": "Democratic People's Republic of Korea", | ||
"KR": "Republic of Korea", | ||
"KW": "Kuwait", | ||
"KY": "Cayman Islands", | ||
"KZ": "Kazakhstan", | ||
"LA": "Lao People's Democratic Republic", | ||
"LB": "Lebanon", | ||
"LC": "Saint Lucia", | ||
"LI": "Liechtenstein", | ||
"LK": "Sri Lanka", | ||
"LR": "Liberia", | ||
"LS": "Lesotho", | ||
"LT": "Lithuania", | ||
"LU": "Luxembourg", | ||
"LV": "Latvia", | ||
"LY": "Libya", | ||
"MA": "Morocco", | ||
"MC": "Monaco", | ||
"MD": "Republic of Moldova", | ||
"ME": "Montenegro", | ||
"MF": "Saint Martin", | ||
"MG": "Madagascar", | ||
"MH": "Marshall Islands", | ||
"MK": "North Macedonia", | ||
"ML": "Mali", | ||
"MM": "Myanmar", | ||
"MN": "Mongolia", | ||
"MO": "Macao", | ||
"MP": "Northern Mariana Islands", | ||
"MQ": "Martinique", | ||
"MR": "Mauritania", | ||
"MS": "Montserrat", | ||
"MT": "Malta", | ||
"MU": "Mauritius", | ||
"MV": "Maldives", | ||
"MW": "Malawi", | ||
"MX": "Mexico", | ||
"MY": "Malaysia", | ||
"MZ": "Mozambique", | ||
"NA": "Namibia", | ||
"NC": "New Caledonia", | ||
"NE": "Niger", | ||
"NF": "Norfolk Island", | ||
"NG": "Nigeria", | ||
"NI": "Nicaragua", | ||
"NL": "Netherlands", | ||
"NO": "Norway", | ||
"NP": "Nepal", | ||
"NR": "Nauru", | ||
"NU": "Niue", | ||
"NZ": "New Zealand", | ||
"OM": "Oman", | ||
"PA": "Panama", | ||
"PE": "Peru", | ||
"PF": "French Polynesia", | ||
"PG": "Papua New Guinea", | ||
"PH": "Philippines", | ||
"PK": "Pakistan", | ||
"PL": "Poland", | ||
"PM": "Saint Pierre and Miquelon", | ||
"PN": "Pitcairn", | ||
"PR": "Puerto Rico", | ||
"PS": "State of Palestine", | ||
"PT": "Portugal", | ||
"PW": "Palau", | ||
"PY": "Paraguay", | ||
"QA": "Qatar", | ||
"RE": "Réunion", | ||
"RO": "Romania", | ||
"RS": "Serbia", | ||
"RU": "Russian Federation", | ||
"RW": "Rwanda", | ||
"SA": "Saudi Arabia", | ||
"SB": "Solomon Islands", | ||
"SC": "Seychelles", | ||
"SD": "Sudan", | ||
"SE": "Sweden", | ||
"SG": "Singapore", | ||
"SH": "Saint Helena", | ||
"SI": "Slovenia", | ||
"SJ": "Svalbard and Jan Mayen", | ||
"SK": "Slovakia", | ||
"SL": "Sierra Leone", | ||
"SM": "San Marino", | ||
"SN": "Senegal", | ||
"SO": "Somalia", | ||
"SR": "Suriname", | ||
"SS": "South Sudan", | ||
"ST": "Sao Tome and Principe", | ||
"SV": "El Salvador", | ||
"SX": "Sint Maarten", | ||
"SY": "Syrian Arab Republic", | ||
"SZ": "Eswatini", | ||
"TC": "Turks and Caicos Islands", | ||
"TD": "Chad", | ||
"TF": "French Southern Territories", | ||
"TG": "Togo", | ||
"TH": "Thailand", | ||
"TJ": "Tajikistan", | ||
"TK": "Tokelau", | ||
"TL": "Timor-Leste", | ||
"TM": "Turkmenistan", | ||
"TN": "Tunisia", | ||
"TO": "Tonga", | ||
"TR": "Turkey", | ||
"TT": "Trinidad and Tobago", | ||
"TV": "Tuvalu", | ||
"TW": "Taiwan", | ||
"TZ": "United Republic of Tanzania", | ||
"UA": "Ukraine", | ||
"UG": "Uganda", | ||
"UM": "United States Minor Outlying Islands", | ||
"US": "United States of America", | ||
"UY": "Uruguay", | ||
"UZ": "Uzbekistan", | ||
"VA": "Holy See", | ||
"VC": "Saint Vincent and the Grenadines", | ||
"VE": "Venezuela", | ||
"VG": "Virgin Islands (British)", | ||
"VI": "Virgin Islands (U.S.)", | ||
"VN": "Viet Nam", | ||
"VU": "Vanuatu", | ||
"WF": "Wallis and Futuna", | ||
"WS": "Samoa", | ||
"YE": "Yemen", | ||
"YT": "Mayotte", | ||
"ZA": "South Africa", | ||
"ZM": "Zambia", | ||
"ZW": "Zimbabwe" | ||
} |