Refactor Zodiac Sign so it's less complex

This commit is contained in:
Dragon Fire
2020-03-13 18:46:42 -04:00
parent f7ad8b2b3b
commit ae30c7f772
3 changed files with 146 additions and 54 deletions
+134
View File
@@ -0,0 +1,134 @@
[
{
"high": {
"month": 1,
"day": 19
},
"low": {
"month": 12,
"day": 22
},
"name": "Capricorn"
},
{
"high": {
"month": 2,
"day": 18
},
"low": {
"month": 1,
"day": 20
},
"name": "Aquarius"
},
{
"high": {
"month": 3,
"day": 20
},
"low": {
"month": 2,
"day": 19
},
"name": "Pisces"
},
{
"high": {
"month": 4,
"day": 19
},
"low": {
"month": 3,
"day": 21
},
"name": "Aries"
},
{
"high": {
"month": 5,
"day": 20
},
"low": {
"month": 4,
"day": 20
},
"name": "Taurus"
},
{
"high": {
"month": 6,
"day": 20
},
"low": {
"month": 5,
"day": 21
},
"name": "Gemini"
},
{
"high": {
"month": 7,
"day": 22
},
"low": {
"month": 6,
"day": 21
},
"name": "Cancer"
},
{
"high": {
"month": 8,
"day": 22
},
"low": {
"month": 7,
"day": 23
},
"name": "Leo"
},
{
"high": {
"month": 9,
"day": 22
},
"low": {
"month": 8,
"day": 23
},
"name": "Virgo"
},
{
"high": {
"month": 10,
"day": 22
},
"low": {
"month": 9,
"day": 23
},
"name": "Libra"
},
{
"high": {
"month": 11,
"day": 21
},
"low": {
"month": 10,
"day": 23
},
"name": "Scorpio"
},
{
"high": {
"month": 12,
"day": 21
},
"low": {
"month": 11,
"day": 22
},
"name": "Sagittarius"
}
]
+11 -53
View File
@@ -1,4 +1,6 @@
const Command = require('../../structures/Command');
const signs = require('../../assets/json/zodiac-sign');
const monthsWith30 = [4, 6, 9, 11];
module.exports = class ZodiacSignCommand extends Command {
constructor(client) {
@@ -28,60 +30,16 @@ module.exports = class ZodiacSignCommand extends Command {
run(msg, { month, day }) {
const sign = this.determineSign(month, day);
if (!sign) return msg.reply('Invalid day.');
return msg.say(`The Zodiac Sign for ${month}/${day} is ${sign}.`);
return msg.say(`The Zodiac Sign for ${month}/${day} is ${sign.name}.`);
}
determineSign(month, day) { // eslint-disable-line complexity
if (month === 1) {
if (day >= 1 && day <= 19) return 'Capricorn';
if (day >= 20 && day <= 31) return 'Aquarius';
return null;
} else if (month === 2) {
if (day >= 1 && day <= 18) return 'Aquarius';
if (day >= 19 && day <= 29) return 'Pisces';
return null;
} else if (month === 3) {
if (day >= 1 && day <= 20) return 'Pisces';
if (day >= 21 && day <= 31) return 'Aries';
return null;
} else if (month === 4) {
if (day >= 1 && day <= 19) return 'Aries';
if (day >= 20 && day <= 31) return 'Taurus';
return null;
} else if (month === 5) {
if (day >= 1 && day <= 20) return 'Taurus';
if (day >= 21 && day <= 31) return 'Gemini';
return null;
} else if (month === 6) {
if (day >= 1 && day <= 20) return 'Gemini';
if (day >= 21 && day <= 31) return 'Cancer';
return null;
} else if (month === 7) {
if (day >= 1 && day <= 22) return 'Cancer';
if (day >= 23 && day <= 31) return 'Leo';
return null;
} else if (month === 8) {
if (day >= 1 && day <= 22) return 'Leo';
if (day >= 23 && day <= 31) return 'Virgo';
return null;
} else if (month === 9) {
if (day >= 1 && day <= 22) return 'Virgo';
if (day >= 23 && day <= 31) return 'Libra';
return null;
} else if (month === 10) {
if (day >= 1 && day <= 22) return 'Libra';
if (day >= 23 && day <= 31) return 'Scorpio';
return null;
} else if (month === 11) {
if (day >= 1 && day <= 21) return 'Scorpio';
if (day >= 22 && day <= 31) return 'Sagittarius';
return null;
} else if (month === 12) {
if (day >= 1 && day <= 21) return 'Sagittarius';
if (day >= 22 && day <= 31) return 'Capricorn';
return null;
} else {
return null;
}
determineSign(month, day) {
if (month === 2 && day > 29) return null;
if (monthsWith30.includes(month) && day > 30) return null;
return signs.find(sign => {
if (month === sign.high.month && day <= sign.high.day) return true;
if (month === sign.low.month && day >= sign.low.month) return true;
return false;
});
}
};
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "xiao",
"version": "112.5.1",
"version": "112.5.2",
"description": "Your personal server companion.",
"main": "Xiao.js",
"scripts": {