~denisebitca/esmeralde

266aa3ad8b35a7aec66cd9a72fcf0a2ae7be5b49 — Rafael Bitca 2 years ago aa3bd2f
Changed things around
6 files changed, 257 insertions(+), 698 deletions(-)

M README.md
M package-lock.json
M package.json
A src/Parser.ts
D src/commands/edt.ts
D src/index.ts
M README.md => README.md +0 -8
@@ 1,8 0,0 @@
src/config.json :
```
{
    "token": "12345",
    "CLIENTID": "12345",
    "GUILDID": ["12345", ...]
}
```
\ No newline at end of file

M package-lock.json => package-lock.json +248 -502
@@ 1,246 1,165 @@
{
  "name": "esmeralde",
  "name": "esmeralde-crawler",
  "version": "1.0.0",
  "lockfileVersion": 2,
  "requires": true,
  "packages": {
    "": {
      "name": "esmeralde",
      "name": "esmeralde-crawler",
      "version": "1.0.0",
      "license": "ISC",
      "dependencies": {
        "@discordjs/rest": "0.1.0-canary.0",
        "axios": "^0.21.2",
        "dayjs": "^1.10.6",
        "discord-api-types": "^0.22.0",
        "discord.js": "^13.1.0",
        "cheerio": "^1.0.0-rc.10",
        "typescript": "^4.4.2"
      },
      "devDependencies": {
        "@types/node": "^16.7.12"
      }
    },
    "node_modules/@discordjs/builders": {
      "version": "0.5.0",
      "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.5.0.tgz",
      "integrity": "sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw==",
    "node_modules/@types/node": {
      "version": "16.11.21",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.21.tgz",
      "integrity": "sha512-Pf8M1XD9i1ksZEcCP8vuSNwooJ/bZapNmIzpmsMaL+jMI+8mEYU3PKvs+xDNuQcJWF/x24WzY4qxLtB0zNow9A==",
      "dev": true
    },
    "node_modules/axios": {
      "version": "0.21.4",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
      "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
      "dependencies": {
        "@sindresorhus/is": "^4.0.1",
        "discord-api-types": "^0.22.0",
        "ow": "^0.27.0",
        "ts-mixer": "^6.0.0",
        "tslib": "^2.3.0"
      },
      "engines": {
        "node": ">=14.0.0",
        "npm": ">=7.0.0"
        "follow-redirects": "^1.14.0"
      }
    },
    "node_modules/@discordjs/collection": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz",
      "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog==",
      "engines": {
        "node": ">=14.0.0"
      }
    "node_modules/boolbase": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
    },
    "node_modules/@discordjs/form-data": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
      "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
    "node_modules/cheerio": {
      "version": "1.0.0-rc.10",
      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
      "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
      "dependencies": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
        "cheerio-select": "^1.5.0",
        "dom-serializer": "^1.3.2",
        "domhandler": "^4.2.0",
        "htmlparser2": "^6.1.0",
        "parse5": "^6.0.1",
        "parse5-htmlparser2-tree-adapter": "^6.0.1",
        "tslib": "^2.2.0"
      },
      "engines": {
        "node": ">= 6"
      }
    },
    "node_modules/@discordjs/rest": {
      "version": "0.1.0-canary.0",
      "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.1.0-canary.0.tgz",
      "integrity": "sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ==",
      "dependencies": {
        "@discordjs/collection": "^0.1.6",
        "@sapphire/async-queue": "^1.1.4",
        "@sapphire/snowflake": "^1.3.5",
        "abort-controller": "^3.0.0",
        "discord-api-types": "^0.18.1",
        "form-data": "^4.0.0",
        "node-fetch": "^2.6.1",
        "tslib": "^2.3.0"
      },
      "engines": {
        "node": ">=16.0.0"
      }
    },
    "node_modules/@discordjs/rest/node_modules/@discordjs/collection": {
      "version": "0.1.6",
      "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
      "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
    },
    "node_modules/@discordjs/rest/node_modules/discord-api-types": {
      "version": "0.18.1",
      "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.18.1.tgz",
      "integrity": "sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg==",
      "deprecated": "No longer supported. Install the latest release (0.20.2)",
      "engines": {
        "node": ">=12"
      }
    },
    "node_modules/@sapphire/async-queue": {
      "version": "1.1.4",
      "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.4.tgz",
      "integrity": "sha512-fFrlF/uWpGOX5djw5Mu2Hnnrunao75WGey0sP0J3jnhmrJ5TAPzHYOmytD5iN/+pMxS+f+u/gezqHa9tPhRHEA==",
      "engines": {
        "node": ">=14",
        "npm": ">=6"
      }
    },
    "node_modules/@sapphire/snowflake": {
      "version": "1.3.6",
      "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-1.3.6.tgz",
      "integrity": "sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg==",
      "deprecated": "This version has been automatically deprecated by @favware/npm-deprecate. Please use a newer version.",
      "engines": {
        "node": ">=12",
        "npm": ">=6"
      }
    },
    "node_modules/@sindresorhus/is": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz",
      "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==",
      "engines": {
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/sindresorhus/is?sponsor=1"
      }
    },
    "node_modules/@types/node": {
      "version": "16.7.12",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.12.tgz",
      "integrity": "sha512-IrhrusVM9QJAn1xLFFqbZH+XCI8L6eZoVHjR4sZeGTBBvjQSuchXGgKpown1jP75TCMSndcbudYBDTekOhcIZA=="
    },
    "node_modules/@types/ws": {
      "version": "7.4.7",
      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
      "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==",
      "dependencies": {
        "@types/node": "*"
        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
      }
    },
    "node_modules/abort-controller": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
    "node_modules/cheerio-select": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
      "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
      "dependencies": {
        "event-target-shim": "^5.0.0"
        "css-select": "^4.1.3",
        "css-what": "^5.0.1",
        "domelementtype": "^2.2.0",
        "domhandler": "^4.2.0",
        "domutils": "^2.7.0"
      },
      "engines": {
        "node": ">=6.5"
      "funding": {
        "url": "https://github.com/sponsors/fb55"
      }
    },
    "node_modules/asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
    },
    "node_modules/axios": {
      "version": "0.21.2",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz",
      "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==",
    "node_modules/css-select": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz",
      "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==",
      "dependencies": {
        "follow-redirects": "^1.14.0"
        "boolbase": "^1.0.0",
        "css-what": "^5.1.0",
        "domhandler": "^4.3.0",
        "domutils": "^2.8.0",
        "nth-check": "^2.0.1"
      },
      "funding": {
        "url": "https://github.com/sponsors/fb55"
      }
    },
    "node_modules/callsites": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
    "node_modules/css-what": {
      "version": "5.1.0",
      "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
      "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
      "engines": {
        "node": ">=6"
        "node": ">= 6"
      },
      "funding": {
        "url": "https://github.com/sponsors/fb55"
      }
    },
    "node_modules/combined-stream": {
      "version": "1.0.8",
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
    "node_modules/dom-serializer": {
      "version": "1.3.2",
      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
      "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
      "dependencies": {
        "delayed-stream": "~1.0.0"
        "domelementtype": "^2.0.1",
        "domhandler": "^4.2.0",
        "entities": "^2.0.0"
      },
      "engines": {
        "node": ">= 0.8"
      }
    },
    "node_modules/dayjs": {
      "version": "1.10.6",
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz",
      "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw=="
    },
    "node_modules/delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
      "engines": {
        "node": ">=0.4.0"
      "funding": {
        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
      }
    },
    "node_modules/discord-api-types": {
      "version": "0.22.0",
      "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz",
      "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==",
      "engines": {
        "node": ">=12"
      }
    "node_modules/domelementtype": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
      "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
      "funding": [
        {
          "type": "github",
          "url": "https://github.com/sponsors/fb55"
        }
      ]
    },
    "node_modules/discord.js": {
      "version": "13.1.0",
      "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.1.0.tgz",
      "integrity": "sha512-gxO4CXKdHpqA+WKG+f5RNnd3srTDj5uFJHgOathksDE90YNq/Qijkd2WlMgTTMS6AJoEnHxI7G9eDQHCuZ+xDA==",
    "node_modules/domhandler": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
      "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
      "dependencies": {
        "@discordjs/builders": "^0.5.0",
        "@discordjs/collection": "^0.2.1",
        "@discordjs/form-data": "^3.0.1",
        "@sapphire/async-queue": "^1.1.4",
        "@types/ws": "^7.4.7",
        "discord-api-types": "^0.22.0",
        "node-fetch": "^2.6.1",
        "ws": "^7.5.1"
        "domelementtype": "^2.2.0"
      },
      "engines": {
        "node": ">=16.6.0",
        "npm": ">=7.0.0"
        "node": ">= 4"
      },
      "funding": {
        "url": "https://github.com/fb55/domhandler?sponsor=1"
      }
    },
    "node_modules/dot-prop": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
    "node_modules/domutils": {
      "version": "2.8.0",
      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
      "dependencies": {
        "is-obj": "^2.0.0"
      },
      "engines": {
        "node": ">=10"
        "dom-serializer": "^1.0.1",
        "domelementtype": "^2.2.0",
        "domhandler": "^4.2.0"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
        "url": "https://github.com/fb55/domutils?sponsor=1"
      }
    },
    "node_modules/event-target-shim": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
      "engines": {
        "node": ">=6"
    "node_modules/entities": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
      "funding": {
        "url": "https://github.com/fb55/entities?sponsor=1"
      }
    },
    "node_modules/follow-redirects": {
      "version": "1.14.3",
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
      "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==",
      "version": "1.14.7",
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
      "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
      "funding": [
        {
          "type": "individual",


@@ 256,103 175,57 @@
        }
      }
    },
    "node_modules/form-data": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
    "node_modules/htmlparser2": {
      "version": "6.1.0",
      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
      "funding": [
        "https://github.com/fb55/htmlparser2?sponsor=1",
        {
          "type": "github",
          "url": "https://github.com/sponsors/fb55"
        }
      ],
      "dependencies": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
      },
      "engines": {
        "node": ">= 6"
        "domelementtype": "^2.0.1",
        "domhandler": "^4.0.0",
        "domutils": "^2.5.2",
        "entities": "^2.0.0"
      }
    },
    "node_modules/is-obj": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/lodash.isequal": {
      "version": "4.5.0",
      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
    },
    "node_modules/mime-db": {
      "version": "1.49.0",
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
      "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
      "engines": {
        "node": ">= 0.6"
      }
    },
    "node_modules/mime-types": {
      "version": "2.1.32",
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
      "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
    "node_modules/nth-check": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
      "dependencies": {
        "mime-db": "1.49.0"
        "boolbase": "^1.0.0"
      },
      "engines": {
        "node": ">= 0.6"
      "funding": {
        "url": "https://github.com/fb55/nth-check?sponsor=1"
      }
    },
    "node_modules/node-fetch": {
      "version": "2.6.1",
      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
      "engines": {
        "node": "4.x || >=6.0.0"
      }
    "node_modules/parse5": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
    },
    "node_modules/ow": {
      "version": "0.27.0",
      "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz",
      "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==",
    "node_modules/parse5-htmlparser2-tree-adapter": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
      "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
      "dependencies": {
        "@sindresorhus/is": "^4.0.1",
        "callsites": "^3.1.0",
        "dot-prop": "^6.0.1",
        "lodash.isequal": "^4.5.0",
        "type-fest": "^1.2.1",
        "vali-date": "^1.0.0"
      },
      "engines": {
        "node": ">=12"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
        "parse5": "^6.0.1"
      }
    },
    "node_modules/ts-mixer": {
      "version": "6.0.0",
      "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz",
      "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ=="
    },
    "node_modules/tslib": {
      "version": "2.3.1",
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
    },
    "node_modules/type-fest": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
      "engines": {
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/typescript": {
      "version": "4.4.2",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz",
      "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
      "version": "4.5.5",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
      "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
      "bin": {
        "tsc": "bin/tsc",
        "tsserver": "bin/tsserver"


@@ 360,282 233,155 @@
      "engines": {
        "node": ">=4.2.0"
      }
    },
    "node_modules/vali-date": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
      "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/ws": {
      "version": "7.5.4",
      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz",
      "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==",
      "engines": {
        "node": ">=8.3.0"
      },
      "peerDependencies": {
        "bufferutil": "^4.0.1",
        "utf-8-validate": "^5.0.2"
      },
      "peerDependenciesMeta": {
        "bufferutil": {
          "optional": true
        },
        "utf-8-validate": {
          "optional": true
        }
      }
    }
  },
  "dependencies": {
    "@discordjs/builders": {
      "version": "0.5.0",
      "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.5.0.tgz",
      "integrity": "sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw==",
      "requires": {
        "@sindresorhus/is": "^4.0.1",
        "discord-api-types": "^0.22.0",
        "ow": "^0.27.0",
        "ts-mixer": "^6.0.0",
        "tslib": "^2.3.0"
      }
    },
    "@discordjs/collection": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.2.1.tgz",
      "integrity": "sha512-vhxqzzM8gkomw0TYRF3tgx7SwElzUlXT/Aa41O7mOcyN6wIJfj5JmDWaO5XGKsGSsNx7F3i5oIlrucCCWV1Nog=="
    },
    "@discordjs/form-data": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
      "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
      "requires": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
      }
    "@types/node": {
      "version": "16.11.21",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.21.tgz",
      "integrity": "sha512-Pf8M1XD9i1ksZEcCP8vuSNwooJ/bZapNmIzpmsMaL+jMI+8mEYU3PKvs+xDNuQcJWF/x24WzY4qxLtB0zNow9A==",
      "dev": true
    },
    "@discordjs/rest": {
      "version": "0.1.0-canary.0",
      "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-0.1.0-canary.0.tgz",
      "integrity": "sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ==",
    "axios": {
      "version": "0.21.4",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
      "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
      "requires": {
        "@discordjs/collection": "^0.1.6",
        "@sapphire/async-queue": "^1.1.4",
        "@sapphire/snowflake": "^1.3.5",
        "abort-controller": "^3.0.0",
        "discord-api-types": "^0.18.1",
        "form-data": "^4.0.0",
        "node-fetch": "^2.6.1",
        "tslib": "^2.3.0"
      },
      "dependencies": {
        "@discordjs/collection": {
          "version": "0.1.6",
          "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
          "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
        },
        "discord-api-types": {
          "version": "0.18.1",
          "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.18.1.tgz",
          "integrity": "sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg=="
        }
        "follow-redirects": "^1.14.0"
      }
    },
    "@sapphire/async-queue": {
      "version": "1.1.4",
      "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.4.tgz",
      "integrity": "sha512-fFrlF/uWpGOX5djw5Mu2Hnnrunao75WGey0sP0J3jnhmrJ5TAPzHYOmytD5iN/+pMxS+f+u/gezqHa9tPhRHEA=="
    },
    "@sapphire/snowflake": {
      "version": "1.3.6",
      "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-1.3.6.tgz",
      "integrity": "sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg=="
    },
    "@sindresorhus/is": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz",
      "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g=="
    "boolbase": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
    },
    "@types/node": {
      "version": "16.7.12",
      "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.12.tgz",
      "integrity": "sha512-IrhrusVM9QJAn1xLFFqbZH+XCI8L6eZoVHjR4sZeGTBBvjQSuchXGgKpown1jP75TCMSndcbudYBDTekOhcIZA=="
    },
    "@types/ws": {
      "version": "7.4.7",
      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
      "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==",
    "cheerio": {
      "version": "1.0.0-rc.10",
      "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
      "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
      "requires": {
        "@types/node": "*"
      }
    },
    "abort-controller": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
        "cheerio-select": "^1.5.0",
        "dom-serializer": "^1.3.2",
        "domhandler": "^4.2.0",
        "htmlparser2": "^6.1.0",
        "parse5": "^6.0.1",
        "parse5-htmlparser2-tree-adapter": "^6.0.1",
        "tslib": "^2.2.0"
      }
    },
    "cheerio-select": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
      "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
      "requires": {
        "event-target-shim": "^5.0.0"
        "css-select": "^4.1.3",
        "css-what": "^5.0.1",
        "domelementtype": "^2.2.0",
        "domhandler": "^4.2.0",
        "domutils": "^2.7.0"
      }
    },
    "asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
    },
    "axios": {
      "version": "0.21.2",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.2.tgz",
      "integrity": "sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==",
    "css-select": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz",
      "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==",
      "requires": {
        "follow-redirects": "^1.14.0"
      }
    },
    "callsites": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
    },
    "combined-stream": {
      "version": "1.0.8",
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
        "boolbase": "^1.0.0",
        "css-what": "^5.1.0",
        "domhandler": "^4.3.0",
        "domutils": "^2.8.0",
        "nth-check": "^2.0.1"
      }
    },
    "css-what": {
      "version": "5.1.0",
      "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
      "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw=="
    },
    "dom-serializer": {
      "version": "1.3.2",
      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
      "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
      "requires": {
        "delayed-stream": "~1.0.0"
        "domelementtype": "^2.0.1",
        "domhandler": "^4.2.0",
        "entities": "^2.0.0"
      }
    },
    "dayjs": {
      "version": "1.10.6",
      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.6.tgz",
      "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw=="
    "domelementtype": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
      "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
    },
    "delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
    },
    "discord-api-types": {
      "version": "0.22.0",
      "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.22.0.tgz",
      "integrity": "sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg=="
    },
    "discord.js": {
      "version": "13.1.0",
      "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.1.0.tgz",
      "integrity": "sha512-gxO4CXKdHpqA+WKG+f5RNnd3srTDj5uFJHgOathksDE90YNq/Qijkd2WlMgTTMS6AJoEnHxI7G9eDQHCuZ+xDA==",
    "domhandler": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz",
      "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==",
      "requires": {
        "@discordjs/builders": "^0.5.0",
        "@discordjs/collection": "^0.2.1",
        "@discordjs/form-data": "^3.0.1",
        "@sapphire/async-queue": "^1.1.4",
        "@types/ws": "^7.4.7",
        "discord-api-types": "^0.22.0",
        "node-fetch": "^2.6.1",
        "ws": "^7.5.1"
        "domelementtype": "^2.2.0"
      }
    },
    "dot-prop": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
    "domutils": {
      "version": "2.8.0",
      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
      "requires": {
        "is-obj": "^2.0.0"
        "dom-serializer": "^1.0.1",
        "domelementtype": "^2.2.0",
        "domhandler": "^4.2.0"
      }
    },
    "event-target-shim": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
    "entities": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
    },
    "follow-redirects": {
      "version": "1.14.3",
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
      "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
    },
    "form-data": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
      "version": "1.14.7",
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
      "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
    },
    "htmlparser2": {
      "version": "6.1.0",
      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
      "requires": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
        "domelementtype": "^2.0.1",
        "domhandler": "^4.0.0",
        "domutils": "^2.5.2",
        "entities": "^2.0.0"
      }
    },
    "is-obj": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
    },
    "lodash.isequal": {
      "version": "4.5.0",
      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
    },
    "mime-db": {
      "version": "1.49.0",
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
      "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
    },
    "mime-types": {
      "version": "2.1.32",
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
      "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
    "nth-check": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
      "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
      "requires": {
        "mime-db": "1.49.0"
        "boolbase": "^1.0.0"
      }
    },
    "node-fetch": {
      "version": "2.6.1",
      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
    "parse5": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
    },
    "ow": {
      "version": "0.27.0",
      "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz",
      "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==",
    "parse5-htmlparser2-tree-adapter": {
      "version": "6.0.1",
      "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
      "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
      "requires": {
        "@sindresorhus/is": "^4.0.1",
        "callsites": "^3.1.0",
        "dot-prop": "^6.0.1",
        "lodash.isequal": "^4.5.0",
        "type-fest": "^1.2.1",
        "vali-date": "^1.0.0"
        "parse5": "^6.0.1"
      }
    },
    "ts-mixer": {
      "version": "6.0.0",
      "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz",
      "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ=="
    },
    "tslib": {
      "version": "2.3.1",
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
    },
    "type-fest": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="
    },
    "typescript": {
      "version": "4.4.2",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz",
      "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ=="
    },
    "vali-date": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
      "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY="
    },
    "ws": {
      "version": "7.5.4",
      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.4.tgz",
      "integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==",
      "requires": {}
      "version": "4.5.5",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
      "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA=="
    }
  }
}

M package.json => package.json +2 -5
@@ 1,5 1,5 @@
{
  "name": "esmeralde",
  "name": "esmeralde-crawler",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",


@@ 12,11 12,8 @@
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@discordjs/rest": "0.1.0-canary.0",
    "axios": "^0.21.2",
    "dayjs": "^1.10.6",
    "discord-api-types": "^0.22.0",
    "discord.js": "^13.1.0",
    "cheerio": "^1.0.0-rc.10",
    "typescript": "^4.4.2"
  },
  "devDependencies": {

A src/Parser.ts => src/Parser.ts +7 -0
@@ 0,0 1,7 @@
import cheerio from 'cheerio';

class Parser{
    constructor(public input: string){

    }
}
\ No newline at end of file

D src/commands/edt.ts => src/commands/edt.ts +0 -103
@@ 1,103 0,0 @@
import { CommandInteraction, TextChannel } from "discord.js";
import { SlashCommandBuilder } from '@discordjs/builders';

//dayjs
import dayjs from 'dayjs';
import weekOfYear from 'dayjs/plugin/weekOfYear';
dayjs.extend(weekOfYear);

//data
import { Command } from '../index';

interface gn {
	[pName:string]: string
}
let groupeNum : gn = {
    "TP 3A1": "15824546",
    "TP 3A2": "15824547",
    "TP 3B1": "15824548",
    "TP 3B2": "15824760",
    "TP 3C1": "15824550",
    "TP 3C2": "15824759",
    "TP 3D1": "15824552",
    "TP 3D2": "15824756",
	"TP-1A": "15824504",
	"TP-1B": "15824505",
	"TP-1C": "15824506",
	"TP-1D": "15824507",
	"TP-1E": "15824508",
	"TP-1F": "15824509",
	"TP-1G": "15824510",
	"TP-1H": "15824511",
	"TP-1I": "15824807",
	"TP-1J": "15824513",
	"TP-1K": "15824514",
	"TP-1L": "15824828&groupes_multi%5B%5D=15824829",
	"TP-1M": "15824516",
	"edt-g1": "15824574",
	"edt-g2": "15824575"
}

function getEDTLink(name : string | number) : string{
    let now = dayjs()
    let week = now.week()-1;
    let year = now.year();
    if(now.day() === 6){
        if(week === 52){
            week = 0;
            year += 1;
        } else {
            week += 1;
        }
    }
	if(name){
		if(typeof(name) === "string"){
			let code = groupeNum[name];
    		return "https://edt.iut-orsay.fr/vue_invite_horizontale.php?current_year=" + year + "&current_week=" + week + "&groupes_multi%5B%5D=" + code + "&lar=1920&hau=1200"
		} else if(typeof(name) === "number"){
			return "https://edt.iut-orsay.fr/vue_etudiant_horizontale.php?current_year=" + year + "&current_student=" + name + "&current_week=" + week + "&lar=1920&hau=1200"
		}
	}
	return "???"
}

let obj : Command = {
	data: new SlashCommandBuilder()
		.setName('edt')
		.setDescription('Trouver ton emploi du temps ou l`emploi du temps de ton groupe.')
		.addIntegerOption(option => option.setName('id-etudiant').setDescription('l`identifiant de l`étudiant')),
	async execute(interaction : CommandInteraction) {
        let user = interaction.options.getInteger('id-etudiant');
        if (user){
            return interaction.reply(getEDTLink(user));
        }
		let test = interaction.channelId;
		let test2 = await interaction.client.channels.fetch(test);
		if(test2 !== undefined){
			if(test2?.isText()){
				if(test2 instanceof TextChannel){
					if(test2.name === "edt"){
						let test3 : TextChannel = test2;
						//get category name
						let test4 = test3.guild.channels.cache.find(u => u.id == test3.parentId);
						if(test4 != undefined){
							return interaction.reply(getEDTLink(test4.name))
						}
					} else if (test2.name === "edt-g1" || test2.name === "edt-g2") {
						let test3 : TextChannel = test2;
						//get category name
						let test4 = test3.guild.channels.cache.find(u => u.id == test3.parentId);
						if(test4 != undefined){
							if(test4.name === "ALTERNANCE"){
								return interaction.reply(getEDTLink(test2.name));
							}
						}
					}
				}
			}
		}
        return interaction.reply(`Ara ara~, je ne marche pas en dehors de mon beau salon... Essaie plutôt le salon edt de ton groupe !`);
	},
};

module.exports = obj;
\ No newline at end of file

D src/index.ts => src/index.ts +0 -80
@@ 1,80 0,0 @@
//node
import fs from 'fs';
import path from 'path';

//config
import config from './config.json';

//discord
import { Client, ClientOptions, Collection, Intents, CommandInteraction } from 'discord.js';
import { SlashCommandBuilder } from '@discordjs/builders';
import { REST } from '@discordjs/rest';
import { Routes } from 'discord-api-types/v9';

export interface Command {
	data: Omit<SlashCommandBuilder, "addSubcommand" | "addSubcommandGroup">,
	execute(interaction : CommandInteraction) : Promise<void>;
}

class ClientMod extends Client{
	public constructor(options: ClientOptions, comm: Collection<string, Command>){
		super(options);
		this.commands = comm;
	}
	public commands: Collection<string, Command>;
}

const rest = new REST({ version: '9' }).setToken(config.token);

const client = new ClientMod({ intents: [Intents.FLAGS.GUILDS] }, new Collection());

//import commands

const commands = [];
client.commands = new Collection();
const commandFiles = fs.readdirSync(path.join(__dirname,'./commands')).filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
	const command = require(`./commands/${file}`);
	console.log(command);
	commands.push(command.data.toJSON());
	client.commands.set(command.data.name, command);
}

(async () => {
	try {
		for(var element of config.GUILDID){
			await rest.put(
				Routes.applicationGuildCommands(config.CLIENTID, element),
				{ body: commands },
			);

			console.log('Registered for guild ' + element);
		}

		console.log('Successfully registered application commands.');
	} catch (error) {
		console.error(error);
	}
})();

client.once('ready', () => {
	console.log('Ready!');
});

client.on('interactionCreate', async interaction => {
	if (!interaction.isCommand()) return;

	const command = client.commands.get(interaction.commandName);

	if (!command) return;

	try {
		await command.execute(interaction);
	} catch (error) {
		console.error(error);
		return interaction.reply({ content: 'Kyaaaa !!! J`ai eu un petit souci, désowée >.<', ephemeral: true });
	}
});

client.login(config.token);
\ No newline at end of file