From 512f32e6ccb1fdb9e5d80bf6fac18c09c13177e9 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:11:52 +0200 Subject: [PATCH 01/40] modules: add axios --- package.json | 1 + yarn.lock | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/package.json b/package.json index a91ae85..e44d503 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "private": true, "dependencies": { "@discordjs/opus": "^0.3.2", + "axios": "^0.20.0", "discord.js": "^12.3.1", "ffmpeg-static": "^4.2.7", "lowdb": "^1.0.0" diff --git a/yarn.lock b/yarn.lock index dd8e4b1..599d966 100644 --- a/yarn.lock +++ b/yarn.lock @@ -233,6 +233,13 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +axios@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" + integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== + dependencies: + follow-redirects "^1.10.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -767,6 +774,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +follow-redirects@^1.10.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" From c4b161d3b0a757a64f2b612236b89364d0652757 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:13:16 +0200 Subject: [PATCH 02/40] feat(meme command): add meme command Add a command which displays a random image from r/spooktober --- commands/Picture/meme.js | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 commands/Picture/meme.js diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js new file mode 100644 index 0000000..92a4b5f --- /dev/null +++ b/commands/Picture/meme.js @@ -0,0 +1,41 @@ +const axios = require('axios').default +const { prefix } = require('../../config.json') + +const SUBREDDIT_JSON_URL = 'https://reddit.com/r/spooktober/.json?count=30' // URL of the json containing last subreddit posts +const POST_HINT_IMG = 'image' // image post hint + +module.exports = { + config: { + name: 'Spooky meme', + usage: `${prefix}meme`, + description: 'Posts a spooky meme as a picture. The image is fetched from reddit.com/r/spooktober', + command: 'meme', + displayHelp: true, + }, + + run: async (bot, message, args) => { + const res = await axios.get(SUBREDDIT_JSON_URL) + if (res.status != 200 || !res.data) { + message.reply('Something failed.') + return + } + + const resData = res.data.data + if (!resData) { + message.reply('Nothing spooky has been found') + return + } + + // filter keeping image posts (as we can't do it via the API) + const posts = resData.children.map((x) => x.data).filter((x) => x.post_hint === POST_HINT_IMG) + if (!posts) { + message.reply('No spooky image has been found') + return + } + + // selecting a random post + const randomIdx = Math.floor(Math.random() * posts.length) + const imageUrl = posts[randomIdx].url + message.channel.send(imageUrl) + }, +} From 3132d0a2771e9cbbcaf6b017315887ae0b557317 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:14:13 +0200 Subject: [PATCH 03/40] feat(meme command): update command handler to use Picture directory --- handlers/command.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/handlers/command.js b/handlers/command.js index af7455b..fd6ba7a 100644 --- a/handlers/command.js +++ b/handlers/command.js @@ -11,7 +11,7 @@ module.exports = (bot) => { } } - const dirs = ['Info', 'Configuration', 'Sound'] + const dirs = ['Info', 'Configuration', 'Sound', 'Picture'] if (process.env.NODE_ENV === 'dev') dirs.push('Test') From 4dc5a80f5e6b15a3d246a8009eb2daaa96fe7deb Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:23:32 +0200 Subject: [PATCH 04/40] modules: replace axios by snoowrap for reddit calls --- package.json | 4 +- yarn.lock | 328 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 311 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index e44d503..345a97e 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ "private": true, "dependencies": { "@discordjs/opus": "^0.3.2", - "axios": "^0.20.0", "discord.js": "^12.3.1", "ffmpeg-static": "^4.2.7", - "lowdb": "^1.0.0" + "lowdb": "^1.0.0", + "snoowrap": "^1.21.0" }, "devDependencies": { "eslint": "^7.10.0", diff --git a/yarn.lock b/yarn.lock index 599d966..c7f5911 100644 --- a/yarn.lock +++ b/yarn.lock @@ -138,7 +138,7 @@ agent-base@6: dependencies: debug "4" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.5" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== @@ -223,33 +223,65 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -axios@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" - integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== - dependencies: - follow-redirects "^1.10.0" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== +bluebird@^3.5.0, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + boxen@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" @@ -307,7 +339,7 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caseless@^0.12.0: +caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= @@ -403,7 +435,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -442,7 +474,7 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -461,6 +493,13 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + debug@4, debug@^4.0.1, debug@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" @@ -552,6 +591,14 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -716,6 +763,21 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -774,10 +836,19 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -follow-redirects@^1.10.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" fs-minipass@^2.0.0: version "2.1.0" @@ -834,6 +905,13 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -889,6 +967,24 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.3: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.3: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -921,6 +1017,15 @@ http-response-object@^3.0.1: dependencies: "@types/node" "^10.0.3" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -1065,7 +1170,7 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -1085,6 +1190,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -1098,6 +1208,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" @@ -1108,11 +1223,31 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -1135,7 +1270,7 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lodash@4, lodash@^4.17.14, lodash@^4.17.19: +lodash@4, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -1173,7 +1308,7 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== @@ -1335,6 +1470,11 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1414,6 +1554,11 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + picomatch@^2.0.4, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -1461,6 +1606,18 @@ progress@^2.0.0, progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-chains@^0.3.11: + version "0.3.12" + resolved "https://registry.yarnpkg.com/promise-chains/-/promise-chains-0.3.12.tgz#68e63484c9b962f1d6e2ab672324d14f5909ee21" + integrity sha1-aOY0hMm5YvHW4qtnIyTRT1kJ7iE= + dependencies: + harmony-reflect "^1.4.3" + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + pstree.remy@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" @@ -1474,7 +1631,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -1486,6 +1643,11 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -1535,6 +1697,49 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise@^4.2.2: + version "4.2.6" + resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.6.tgz#7e7e5b9578630e6f598e3813c0f8eb342a27f0a2" + integrity sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== + dependencies: + bluebird "^3.5.0" + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1561,12 +1766,17 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -1634,11 +1844,43 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +snoowrap@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/snoowrap/-/snoowrap-1.21.0.tgz#559d30a11152860d3a4322f113963308c62df969" + integrity sha512-vSQlfm0ikek6mezBhTGtYw0vk4hdpgIrtm2o4kZPDzg0HVs4b/Kw7COEfD8TujQP0zzp9EGSwa1rkHufBrwkEw== + dependencies: + bluebird "^3.5.5" + lodash "^4.17.15" + promise-chains "^0.3.11" + request "^2.87.0" + request-promise "^4.2.2" + ws "^3.3.1" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + steno@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" @@ -1791,6 +2033,26 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + tweetnacl@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" @@ -1820,6 +2082,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + undefsafe@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" @@ -1872,11 +2139,25 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1925,6 +2206,15 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +ws@^3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + ws@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" From 90ea3af4d3791010aff76b37afb43fa501aa103c Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:00 +0200 Subject: [PATCH 05/40] feat(meme command): add reddit helper --- utils/redditHelper.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 utils/redditHelper.js diff --git a/utils/redditHelper.js b/utils/redditHelper.js new file mode 100644 index 0000000..1a2f145 --- /dev/null +++ b/utils/redditHelper.js @@ -0,0 +1,10 @@ +module.exports = { + configIsValid: (redditConf) => { + return ( + redditConf && redditConf.userAgent && redditConf.clientId && redditConf.clientSecret && redditConf.refreshToken + ) + }, + isPicture: (submission) => { + return submission.url && submission.url.includes('https://i.redd.it') + }, +} From b00195415a021545699aa38953147abee839b1a8 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:38 +0200 Subject: [PATCH 06/40] refactor(meme command): use reddit API to get random image --- commands/Picture/meme.js | 42 +++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js index 92a4b5f..acab93d 100644 --- a/commands/Picture/meme.js +++ b/commands/Picture/meme.js @@ -1,8 +1,9 @@ -const axios = require('axios').default -const { prefix } = require('../../config.json') +const snoowrap = require('snoowrap') +const redditHelper = require('../../utils/redditHelper.js') +const { prefix, reddit } = require('../../config.json') +const { isPicture } = require('../../utils/redditHelper.js') -const SUBREDDIT_JSON_URL = 'https://reddit.com/r/spooktober/.json?count=30' // URL of the json containing last subreddit posts -const POST_HINT_IMG = 'image' // image post hint +const SUBREDDIT_NAME = 'spooktober' module.exports = { config: { @@ -14,28 +15,25 @@ module.exports = { }, run: async (bot, message, args) => { - const res = await axios.get(SUBREDDIT_JSON_URL) - if (res.status != 200 || !res.data) { - message.reply('Something failed.') + if (!redditHelper.configIsValid(reddit)) { + message.reply(':ghost: No reddit config found. Please check the README.md to provide one.') return } - const resData = res.data.data - if (!resData) { - message.reply('Nothing spooky has been found') - return - } + const retriever = new snoowrap({ + userAgent: reddit.userAgent, + clientId: reddit.clientId, + clientSecret: reddit.clientSecret, + refreshToken: reddit.refreshToken, + }) - // filter keeping image posts (as we can't do it via the API) - const posts = resData.children.map((x) => x.data).filter((x) => x.post_hint === POST_HINT_IMG) - if (!posts) { - message.reply('No spooky image has been found') - return - } + const submissions = await retriever.getSubreddit(SUBREDDIT_NAME).getHot() + const imageSubmissions = submissions.filter((x) => !x.over_18 && !x.spoiler && redditHelper.isPicture(x)) + const randomIdx = Math.floor(Math.random() * imageSubmissions.length) + const randSubmission = imageSubmissions[randomIdx] - // selecting a random post - const randomIdx = Math.floor(Math.random() * posts.length) - const imageUrl = posts[randomIdx].url - message.channel.send(imageUrl) + console.log(imageSubmissions) + if (randSubmission) message.channel.send(randSubmission.url) + else message.channel.send(':ghost: No spooky meme found') }, } From 9c0bb10ae8bd34ba76dfdaa7066cf3ce68d478bd Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:58 +0200 Subject: [PATCH 07/40] config: update config example to match reddit arguments --- config.example.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/config.example.json b/config.example.json index a4495ba..f28603c 100644 --- a/config.example.json +++ b/config.example.json @@ -9,5 +9,12 @@ "primary": "#FF6403", "success": "#2ECC71", "error": "#E74C3C" + }, + "reddit": { + "userAgent": "SpookyBot, a Discord bot to celebrate Halloween", + "clientId": "", + "clientSecret": "", + "refreshToken": "" } -} \ No newline at end of file +} + From f3ab379c9a770e9f1d62211247159ccc0e12b79a Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:55:38 +0200 Subject: [PATCH 08/40] fix(meme command): remove console.log --- commands/Picture/meme.js | 1 - 1 file changed, 1 deletion(-) diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js index acab93d..98f905f 100644 --- a/commands/Picture/meme.js +++ b/commands/Picture/meme.js @@ -32,7 +32,6 @@ module.exports = { const randomIdx = Math.floor(Math.random() * imageSubmissions.length) const randSubmission = imageSubmissions[randomIdx] - console.log(imageSubmissions) if (randSubmission) message.channel.send(randSubmission.url) else message.channel.send(':ghost: No spooky meme found') }, From 6e16e46aac3723686dcd2498f208eaaaba247f3b Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 6 Oct 2020 21:43:01 +0200 Subject: [PATCH 09/40] :chart_with_upwards_trend: Add a log when the reaction system is triggered --- events/message.js | 2 +- utils/reactMessage.js | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/events/message.js b/events/message.js index c8eef78..a41990a 100644 --- a/events/message.js +++ b/events/message.js @@ -44,6 +44,6 @@ module.exports = async (bot, webhook, message) => { } else { // -------------------- Reaction system -------------------- // console.log(reactMessage) - reactMessage(message.guild.id, message) + reactMessage(message.guild.id, message, webhook) } } diff --git a/utils/reactMessage.js b/utils/reactMessage.js index 56ffeae..cba537f 100644 --- a/utils/reactMessage.js +++ b/utils/reactMessage.js @@ -1,3 +1,5 @@ +const { MessageEmbed } = require('discord.js') +const { colors } = require('../config.json') const { getGuild } = require('../models/servers') String.prototype.contains = function (toCheck) { @@ -14,18 +16,42 @@ const translationNameContainsWord = (translationName, fullMessage) => { const translationNameContainsUser = (translationName, mentions) => { // Search all mentions for trigger words, cast translationName to an array if not for compactness - return mentions.members.some(m => (typeof translationName === 'string' ? [translationName] : translationName).some(w => m.displayName.toLowerCase().contains(w))) + return mentions.members.some((m) => + (typeof translationName === 'string' ? [translationName] : translationName).some((w) => + m.displayName.toLowerCase().contains(w) + ) + ) } -module.exports = async (guildId, message) => { +module.exports = async (guildId, message, webhook) => { const guildData = await getGuild(guildId) const translation = await require(`../lang/${guildData.lang}.js`) const fullMessage = message.content.toLowerCase() + let triggeredEmoji = [] + translation.words.forEach((w) => { - if (translationNameContainsWord(w.name, fullMessage)) message.react(w.emoji) + if (translationNameContainsWord(w.name, fullMessage)) { + message.react(w.emoji) + triggeredEmoji.push(w.emoji) + } }) - translation.mentions.forEach(m => { - if (translationNameContainsUser(m.name, message.mentions)) message.react(m.emoji) + translation.mentions.forEach((m) => { + if (translationNameContainsUser(m.name, message.mentions)) { + message.react(m.emoji) + triggeredEmoji.push(m.emoji) + } }) + + console.log(triggeredEmoji) + + if (triggeredEmoji.length != 0) { + const privateEmbed = new MessageEmbed() + .setColor(colors.primary) + .setTitle(`Reaction trigger`) + .setDescription(`${message.content}\nReacted with:\n${triggeredEmoji.join('\n')}`) + .setFooter(`${message.author.tag} | #${message.channel.name} | ${message.guild.name}`, message.guild.iconURL()) + + webhook.send(privateEmbed) + } } From 81366800eb4a0a4a738d6bf63c2f32353193f397 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 6 Oct 2020 22:07:14 +0200 Subject: [PATCH 10/40] :globe_with_meridians: Improve setlang command --- commands/Configuration/setlang.js | 14 ++- lang/{gr.js => el.js} | 4 +- utils/languageCode.js | 141 ++++++++++++++++++++++++++++++ 3 files changed, 153 insertions(+), 6 deletions(-) rename lang/{gr.js => el.js} (96%) create mode 100644 utils/languageCode.js diff --git a/commands/Configuration/setlang.js b/commands/Configuration/setlang.js index 3c0b61d..c23d9f6 100644 --- a/commands/Configuration/setlang.js +++ b/commands/Configuration/setlang.js @@ -6,6 +6,8 @@ const { resolve } = require('path') const { changeLang } = require('../../models/servers') +const ISOCode = require('../../utils/languageCode') + module.exports = { config: { command: 'setlang', @@ -40,18 +42,22 @@ module.exports = { changeLang(message.guild.id, args[0]) } else { // The language doesn't exist - let messageContent = ['The requested language does not exist, please choose a language from this list:'] - availableLang.forEach((lang) => messageContent.push(`- **${lang}**`)) + let messageContent = [ + 'The requested language does not exist, please choose a language from this list: (the bold part)', + ] + availableLang.forEach((lang) => messageContent.push(`- **${lang}**: ${ISOCode.find((l) => l.code == lang).name}`)) const embed = new MessageEmbed() .setColor(colors.primary) .setDescription(messageContent) - .setFooter('This message will be deleted automatically') + .setFooter( + "If you can't find your language, don't hesitate to contact us by using the command boo!support | This message will be deleted automatically" + ) message.channel.send(embed).then((m) => { setTimeout(() => { m.delete() - }, 10000) + }, 20000) }) } }, diff --git a/lang/gr.js b/lang/el.js similarity index 96% rename from lang/gr.js rename to lang/el.js index 6f1b366..13a82cf 100644 --- a/lang/gr.js +++ b/lang/el.js @@ -1,5 +1,5 @@ module.exports = { - lang: 'gr', + lang: 'el', words: [ { // Please do not delete this one ๐Ÿ™ @@ -33,6 +33,6 @@ module.exports = { { name: 'ฮ™ฯƒฯ„ฯŒฯ‚', emoji: '๐Ÿ•ธ', - } + }, ], } diff --git a/utils/languageCode.js b/utils/languageCode.js new file mode 100644 index 0000000..f092295 --- /dev/null +++ b/utils/languageCode.js @@ -0,0 +1,141 @@ +module.exports = [ + { name: '(Afan) Oromo', code: 'om' }, + { name: 'Abkhazian', code: 'ab' }, + { name: 'Afar', code: 'aa' }, + { name: 'Afrikaans', code: 'af' }, + { name: 'Albanian', code: 'sq' }, + { name: 'Amharic', code: 'am' }, + { name: 'Arabic', code: 'ar' }, + { name: 'Armenian', code: 'hy' }, + { name: 'Assamese', code: 'as' }, + { name: 'Aymara', code: 'ay' }, + { name: 'Azerbaijani', code: 'az' }, + { name: 'Bashkir', code: 'ba' }, + { name: 'Basque', code: 'eu' }, + { name: 'Bengali', code: 'bn' }, + { name: 'Bhutani', code: 'dz' }, + { name: 'Bihari', code: 'bh' }, + { name: 'Bislama', code: 'bi' }, + { name: 'Breton', code: 'br' }, + { name: 'Bulgarian', code: 'bg' }, + { name: 'Burmese', code: 'my' }, + { name: 'Byelorussian', code: 'be' }, + { name: 'Cambodian', code: 'km' }, + { name: 'Catalan', code: 'ca' }, + { name: 'Chinese', code: 'zh' }, + { name: 'Corsican', code: 'co' }, + { name: 'Croatian', code: 'hr' }, + { name: 'Czech', code: 'cs' }, + { name: 'Danish', code: 'da' }, + { name: 'Dutch', code: 'nl' }, + { name: 'English', code: 'en' }, + { name: 'Esperanto', code: 'eo' }, + { name: 'Estonian', code: 'et' }, + { name: 'Faeroese', code: 'fo' }, + { name: 'Fiji', code: 'fj' }, + { name: 'Finnish', code: 'fi' }, + { name: 'French', code: 'fr' }, + { name: 'Frisian', code: 'fy' }, + { name: 'Galician', code: 'gl' }, + { name: 'Georgian', code: 'ka' }, + { name: 'German', code: 'de' }, + { name: 'Greek', code: 'el' }, + { name: 'Greenlandic', code: 'kl' }, + { name: 'Guarani', code: 'gn' }, + { name: 'Gujarati', code: 'gu' }, + { name: 'Hausa', code: 'ha' }, + { name: 'Hebrew (former iw)', code: 'he' }, + { name: 'Hindi', code: 'hi' }, + { name: 'Hungarian', code: 'hu' }, + { name: 'Icelandic', code: 'is' }, + { name: 'Indonesian (former in)', code: 'id' }, + { name: 'Interlingua', code: 'ia' }, + { name: 'Interlingue', code: 'ie' }, + { name: 'Inupiak', code: 'ik' }, + { name: 'Inuktitut (Eskimo)', code: 'iu' }, + { name: 'Irish', code: 'ga' }, + { name: 'Italian', code: 'it' }, + { name: 'Japanese', code: 'ja' }, + { name: 'Javanese', code: 'jw' }, + { name: 'Kannada', code: 'kn' }, + { name: 'Kashmiri', code: 'ks' }, + { name: 'Kazakh', code: 'kk' }, + { name: 'Kinyarwanda', code: 'rw' }, + { name: 'Kirghiz', code: 'ky' }, + { name: 'Kirundi', code: 'rn' }, + { name: 'Korean', code: 'ko' }, + { name: 'Kurdish', code: 'ku' }, + { name: 'Laothian', code: 'lo' }, + { name: 'Latin', code: 'la' }, + { name: 'Latvian Lettish', code: 'lv' }, + { name: 'Lingala', code: 'ln' }, + { name: 'Lithuanian', code: 'lt' }, + { name: 'Macedonian', code: 'mk' }, + { name: 'Malagasy', code: 'mg' }, + { name: 'Malay', code: 'ms' }, + { name: 'Malayalam', code: 'ml' }, + { name: 'Maltese', code: 'mt' }, + { name: 'Maori', code: 'mi' }, + { name: 'Marathi', code: 'mr' }, + { name: 'Moldavian', code: 'mo' }, + { name: 'Mongolian', code: 'mn' }, + { name: 'Nauru', code: 'na' }, + { name: 'Nepali', code: 'ne' }, + { name: 'Norwegian', code: 'no' }, + { name: 'Occitan', code: 'oc' }, + { name: 'Oriya', code: 'or' }, + { name: 'Pashto Pushto', code: 'ps' }, + { name: 'Persian', code: 'fa' }, + { name: 'Polish', code: 'pl' }, + { name: 'Portuguese', code: 'pt' }, + { name: 'Punjabi', code: 'pa' }, + { name: 'Quechua', code: 'qu' }, + { name: 'Rhaeto Romance', code: 'rm' }, + { name: 'Romanian', code: 'ro' }, + { name: 'Russian', code: 'ru' }, + { name: 'Samoan', code: 'sm' }, + { name: 'Sangro', code: 'sg' }, + { name: 'Sanskrit', code: 'sa' }, + { name: 'Scots Gaelic', code: 'gd' }, + { name: 'Serbian', code: 'sr' }, + { name: 'Serbo Croatian', code: 'sh' }, + { name: 'Sesotho', code: 'st' }, + { name: 'Setswana', code: 'tn' }, + { name: 'Shona', code: 'sn' }, + { name: 'Sindhi', code: 'sd' }, + { name: 'Singhalese', code: 'si' }, + { name: 'Siswati', code: 'ss' }, + { name: 'Slovak', code: 'sk' }, + { name: 'Slovenian', code: 'sl' }, + { name: 'Somali', code: 'so' }, + { name: 'Spanish', code: 'es' }, + { name: 'Sudanese', code: 'su' }, + { name: 'Swahili', code: 'sw' }, + { name: 'Swedish', code: 'sv' }, + { name: 'Tagalog', code: 'tl' }, + { name: 'Tajik', code: 'tg' }, + { name: 'Tamil', code: 'ta' }, + { name: 'Tatar', code: 'tt' }, + { name: 'Tegulu', code: 'te' }, + { name: 'Thai', code: 'th' }, + { name: 'Tibetan', code: 'bo' }, + { name: 'Tigrinya', code: 'ti' }, + { name: 'Tonga', code: 'to' }, + { name: 'Tsonga', code: 'ts' }, + { name: 'Turkish', code: 'tr' }, + { name: 'Turkmen', code: 'tk' }, + { name: 'Twi', code: 'tw' }, + { name: 'Uigur', code: 'ug' }, + { name: 'Ukrainian', code: 'uk' }, + { name: 'Urdu', code: 'ur' }, + { name: 'Uzbek', code: 'uz' }, + { name: 'Vietnamese', code: 'vi' }, + { name: 'Volapuk', code: 'vo' }, + { name: 'Welch', code: 'cy' }, + { name: 'Wolof', code: 'wo' }, + { name: 'Xhosa', code: 'xh' }, + { name: 'Yiddish (former ji)', code: 'yi' }, + { name: 'Yoruba', code: 'yo' }, + { name: 'Zhuang', code: 'za' }, + { name: 'Zulu', code: 'zu' }, +] From 590ab2dae8c795707e1303aef19f9a2b30f9b06a Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 6 Oct 2020 22:13:54 +0200 Subject: [PATCH 11/40] :sparkles: Add vote command --- commands/Info/vote.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 commands/Info/vote.js diff --git a/commands/Info/vote.js b/commands/Info/vote.js new file mode 100644 index 0000000..18aefe6 --- /dev/null +++ b/commands/Info/vote.js @@ -0,0 +1,23 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config.json') + +module.exports = { + config: { + command: 'vote', + name: 'Vote', + description: 'Vote for the bot', + usage: `${prefix}vote`, + displayHelp: true, + }, + + run: async (bot, message, args) => { + const embed = new MessageEmbed() + .setColor(colors.primary) + .setAuthor('Support server', bot.user.avatarURL()) + .setDescription( + 'You can vote for the bot by clicking on the following link: [https://discordbotlist.com/bots/spookybot/upvote](https://discordbotlist.com/bots/spookybot/upvote)' + ) + + message.channel.send(embed) + }, +} From 0b58a5d6d5aa1f36d520a6aaa8c668c8089c4bae Mon Sep 17 00:00:00 2001 From: illusi0nary Date: Tue, 6 Oct 2020 23:56:57 +0200 Subject: [PATCH 12/40] Testing manual Workflow --- .github/workflows/test.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..66de47d --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: Deployment Workflow +on: + workflow_dispatch: + inputs: + tags: + description: 'Tag' +jobs: + deploy_prod_bot: + runs-on: ubuntu-latest + steps: + - uses: appleboy/ssh-action@master + with: + host: 194.9.172.249 + port: 22 + username: spookybot + key: ${{ SSH_KEY }} + - name: Deploy to live bot + env: + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + echo "Tags: ${{ github.event.inputs.tags }}" From 0fe83309fc5d9d8b2e80b77f46119751f7ff5e18 Mon Sep 17 00:00:00 2001 From: illusi0nary Date: Tue, 6 Oct 2020 23:59:36 +0200 Subject: [PATCH 13/40] Removed workflows from master --- .github/workflows/test.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 66de47d..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Deployment Workflow -on: - workflow_dispatch: - inputs: - tags: - description: 'Tag' -jobs: - deploy_prod_bot: - runs-on: ubuntu-latest - steps: - - uses: appleboy/ssh-action@master - with: - host: 194.9.172.249 - port: 22 - username: spookybot - key: ${{ SSH_KEY }} - - name: Deploy to live bot - env: - DOCKER_USER: ${{ secrets.DOCKER_USER }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - run: | - echo "Tags: ${{ github.event.inputs.tags }}" From 26037753f0c1d433c96f90baa7abe91d28d48840 Mon Sep 17 00:00:00 2001 From: gituser Date: Wed, 7 Oct 2020 22:16:16 +0200 Subject: [PATCH 14/40] Added more german translations and emojis. --- lang/de.js | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 380 insertions(+), 10 deletions(-) diff --git a/lang/de.js b/lang/de.js index b2b0e6d..2687e33 100644 --- a/lang/de.js +++ b/lang/de.js @@ -3,36 +3,406 @@ module.exports = { words: [ { // Please do not delete this one ๐Ÿ™ - name: 'spooky', + name: ['spooky', 'gruselig'], emoji: '761602615326146590', }, + { + name: ['alien', 'auรŸerirdische', 'auรŸerirdischer'], + uniqueName: 'Alien', + emoji: '๐Ÿ‘ฝ', + }, + { + name: ['alienmonster', 'monster'], + uniqueName: 'Alien Monster', + emoji: '๐Ÿ‘พ', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['herz', 'anatomisches herz'], +// uniqueName: 'Anatomical Heart', +// emoji: '๐Ÿซ€', +// }, + { + name: ['wรผtender teufel'], + uniqueName: 'Angry Face with Horns', + emoji: '๐Ÿ‘ฟ', + }, + { + name: ['unruhig', 'besorgt'], + uniqueName: 'Anxious Face with Sweat', + emoji: '๐Ÿ˜ฐ', + }, + { + name: ['axt'], + uniqueName: 'Axe', + emoji: '๐Ÿช“', + }, + { + name: ['fledermaus'], + uniqueName: 'Bat', + emoji: '๐Ÿฆ‡', + }, + { + name: ['schlagendes herz'], + uniqueName: 'Beating Heart', + emoji: '๐Ÿ’“', + }, + { + name: ['schwarzes herz'], + uniqueName: 'Black Heart', + emoji: '๐Ÿ–ค', + }, + { + name: ['schwarze katze'], + uniqueName: 'Black Cat', + emoji: '๐Ÿˆโ€โฌ›', + }, + { + name: ['blut'], + uniqueName: 'Blood', + emoji: '๐Ÿฉธ', + }, + { + name: ['blutstropfen'], + uniqueName: 'Drop of Blood', + emoji: '๐Ÿฉธ', + }, + { + name: ['knochen'], + uniqueName: 'Bone', + emoji: '๐Ÿฆด', + }, + { + name: ['gehirn', 'brain'], + uniqueName: 'Brain', + emoji: '๐Ÿง ', + }, + { + name: ['besen'], + uniqueName: 'Broom', + emoji: '๐Ÿงน', + }, { - name: 'bonbon', + name: ['kerze'], + uniqueName: 'Candle', + emoji: '๐Ÿ•ฏ', + }, + { + name: ['candy', 'bonbon', 'sรผรŸigkeit'], + uniqueName: 'Candy', emoji: '๐Ÿฌ', }, { - name: 'geist', + name: ['ketten'], + uniqueName: 'Chains', + emoji: 'โ›“', + }, + { + name: ['schokoladenriegel', 'schokoriegel'], + uniqueName: 'Chocolate Bar', + emoji: '๐Ÿซ', + }, + { + name: ['blitz', 'gewitterwolke'], + uniqueName: 'Cloud with Lightning', + emoji: '๐ŸŒฉ', + }, + { + name: ['clown'], + uniqueName: 'Clown Face', + emoji: '๐Ÿคก', + }, + { + name: ['sarg'], + uniqueName: 'Coffin', + emoji: 'โšฐ', + }, + { + name: ['kristallkugel', 'hellseherkugel'], + uniqueName: 'Crystal Ball', + emoji: '๐Ÿ”ฎ', + }, + { + name: ['messer'], + uniqueName: 'Dagger', + emoji: '๐Ÿ—ก', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['verkleidetes gesicht', 'verkleidet'], +// uniqueName: 'Disguised Face', +// emoji: '๐Ÿฅธ', +// }, + { + name: ['verlassenes haus', 'geisterhaus', 'geistervilla'], + uniqueName: 'Derelict House', + emoji: '๐Ÿš', + }, + { + name: ['ohr'], + uniqueName: 'Ear', + emoji: '๐Ÿ‘‚', + }, + { + name: ['auge'], + uniqueName: 'Eye', + emoji: '๐Ÿ‘๏ธ', + }, + { + name: ['augen'], + uniqueName: 'Eyes', + emoji: '๐Ÿ‘€', + }, + { + name: ['untersuchen'], + uniqueName: 'Detective', + emoji: '๐Ÿ•ต', + }, + { + name: ['elf'], + uniqueName: 'Elf', + emoji: '๐Ÿง', + }, + { + name: ['schrei', 'schreie', 'schreien'], + uniqueName: 'Face Screaming in Fear', + emoji: '๐Ÿ˜ฑ', + }, + { + name: ['mumie'], + uniqueName: 'Face with Head-Bandage', + emoji: '๐Ÿค•', + }, + { + name: ['fee'], + uniqueName: 'Fairy', + emoji: '๐Ÿงš', + }, + { + name: ['angst', 'รคngstlich'], + uniqueName: 'Fearful Face', + emoji: '๐Ÿ˜จ', + }, + { + name: ['feuer'], + uniqueName: 'Fire', + emoji: '๐Ÿ”ฅ', + }, + { + name: ['ufo', 'fliegende untertasse'], + uniqueName: 'Flying Saucer', + emoji: '๐Ÿ›ธ', + }, + { + name: ['nebel', 'nebelig', 'neblig'], + uniqueName: 'Fog', + emoji: '๐ŸŒซ๏ธ', + }, + { + name: ['fuรŸ'], + uniqueName: 'Foot', + emoji: '๐Ÿฆถ', + }, + { + name: ['fuรŸspuren'], + uniqueName: 'Footprints', + emoji: '๐Ÿ‘ฃ', + }, + { + name: ['vollmond'], + uniqueName: 'Full Moon', + emoji: '๐ŸŒ•', + }, + { + name: ['urne'], + uniqueName: 'Funeral Urn', + emoji: 'โšฑ', + }, + { + name: ['genie'], + uniqueName: 'Genie', + emoji: '๐Ÿงž', + }, + { + name: ['goblin'], + uniqueName: 'Goblin', + emoji: '๐Ÿ‘บ', + }, + { + name: ['geist'], + uniqueName: 'Ghost', emoji: '๐Ÿ‘ป', }, { - name: 'halloween', + name: ['grรผnes herz'], + uniqueName: 'Green Heart', + emoji: '๐Ÿ’š', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['headstone'], +// uniqueName: 'Headstone', +// emoji: '๐Ÿชฆ', +// }, + { + name: ['hochspannung', 'spannend'], + uniqueName: 'High Voltage', + emoji: 'โšก', + }, + { + name: ['halloween', 'kรผrbis', 'hellowien'], + uniqueName: 'Jack-O-Lantern', emoji: '๐ŸŽƒ', }, { - name: 'vampir', - emoji: '๐Ÿง›', + name: ['bein'], + uniqueName: 'Leg', + emoji: '๐Ÿฆต', + }, + { + name: ['lollipop', 'lutscher'], + uniqueName: 'Lollipop', + emoji: '๐Ÿญ', }, { - name: 'zauberhaft', + name: ['zauberhaft', 'hexer', 'magier', 'zauberer', 'zaubrer'], + uniqueName: 'Mage', emoji: '๐Ÿง™', }, { - name: ['zombie', 'untote'], - emoji: '๐ŸงŸ', + name: ['meerjungfrau'], + uniqueName: 'Mermaid', + emoji: '๐Ÿงœโ€โ™€๏ธ', + }, + { + name: ['meermann'], + uniqueName: 'Merman', + emoji: '๐Ÿงœโ€โ™‚๏ธ', + }, + { + name: ['meermensch'], + uniqueName: 'Merperson', + emoji: '๐Ÿงœ', + }, + { + name: ['neumond', 'neumondgesicht'], + uniqueName: 'New Moon Face', + emoji: '๐ŸŒš', + }, + { + name: ['sternennacht', 'nacht', 'sternenklare nacht'], + uniqueName: 'Night with Stars', + emoji: '๐ŸŒƒ', }, { - name: 'netz', + name: ['ogre', 'oger'], + uniqueName: 'Ogre', + emoji: '๐Ÿ‘น', + }, + { + name: ['oranges herz', 'orangenes herz'], + uniqueName: 'Orange Heart', + emoji: '๐Ÿงก', + }, + { + name: ['eule'], + uniqueName: 'Owl', + emoji: '๐Ÿฆ‰', + }, + { + name: ['verkleidung', 'verkleidungen', 'verkleiden', 'verkleide' ], + uniqueName: 'Performing Arts', + emoji: '๐ŸŽญ', + }, + { + name: ['schwebende person im anzug', 'schweben', 'schwebe', 'schwebt'], + uniqueName: 'Person In Suit Levitating', + emoji: '๐Ÿ•ด', + }, + { + name: ['prinzessin'], + uniqueName: 'Princess', + emoji: '๐Ÿ‘ธ', + }, + { + name: ['roboter', 'maschinenmann', 'bot'], + uniqueName: 'Robot', + emoji: '๐Ÿค–', + }, + { + name: ['schรคdel', 'totenschรคdel', 'totenkopf'], + uniqueName: 'Skull', + emoji: '๐Ÿ’€', + }, + { + name: ['totenkopf mit knochen', 'totenkopfflagge', 'pirat'], + uniqueName: 'Skull and Crossbones', + emoji: 'โ˜ ', + }, + { + name: ['lรคchelnder teufel', 'teufel', 'teuflisch'], + uniqueName: 'Smiling Face with Horns', + emoji: '๐Ÿ˜ˆ', + }, + { + name: ['spinne'], + uniqueName: 'Spider', + emoji: '๐Ÿ•ท', + }, + { + name: ['netz', 'spinnennetz'], + uniqueName: 'Spider Web', emoji: '๐Ÿ•ธ', }, + { + name: ['zunge'], + uniqueName: 'Tongue', + emoji: '๐Ÿ‘…', + }, + { + name: ['einhorn'], + uniqueName: 'Unicorn', + emoji: '๐Ÿฆ„', + }, + { + name: ['vampir'], + uniqueName: 'Vampire', + emoji: '๐Ÿง›', + }, + { + name: ['blume', 'blรผte', 'verwelkt'], + uniqueName: 'Wilted Flower', + emoji: '๐Ÿฅ€', + }, + { + name: ['elfin'], + uniqueName: 'Woman Elf', + emoji: '๐Ÿงโ€โ™€๏ธ', + }, + { + name: ['weibliche genie'], + uniqueName: 'Woman Genie', + emoji: '๐Ÿงžโ€โ™€๏ธ', + }, + { + name: ['hexe', 'magierin', 'zauberin', 'zaubrerin'], + uniqueName: 'Woman Mage', + emoji: '๐Ÿง™โ€โ™€๏ธ', + }, + { + name: ['vampirin'], + uniqueName: 'Woman Vampire', + emoji: '๐Ÿง›โ€โ™€๏ธ', + }, + { + name: ['weiblicher zombie'], + uniqueName: 'Woman Zombie', + emoji: '๐ŸงŸโ€โ™€๏ธ', + }, + { + name: ['zombie', 'untote'], + uniqueName: 'Zombie', + emoji: '๐ŸงŸ', + } ], } From 748fdfcddfcf267af8160cd287af30cb77f6e709 Mon Sep 17 00:00:00 2001 From: gituser Date: Wed, 7 Oct 2020 22:21:13 +0200 Subject: [PATCH 15/40] Removed uniqueNames and translated headstone. --- lang/de.js | 81 +----------------------------------------------------- 1 file changed, 1 insertion(+), 80 deletions(-) diff --git a/lang/de.js b/lang/de.js index 2687e33..ac3c0fe 100644 --- a/lang/de.js +++ b/lang/de.js @@ -8,400 +8,321 @@ module.exports = { }, { name: ['alien', 'auรŸerirdische', 'auรŸerirdischer'], - uniqueName: 'Alien', emoji: '๐Ÿ‘ฝ', }, { name: ['alienmonster', 'monster'], - uniqueName: 'Alien Monster', emoji: '๐Ÿ‘พ', }, // Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 // { // name: ['herz', 'anatomisches herz'], -// uniqueName: 'Anatomical Heart', // emoji: '๐Ÿซ€', // }, { name: ['wรผtender teufel'], - uniqueName: 'Angry Face with Horns', emoji: '๐Ÿ‘ฟ', }, { name: ['unruhig', 'besorgt'], - uniqueName: 'Anxious Face with Sweat', emoji: '๐Ÿ˜ฐ', }, { name: ['axt'], - uniqueName: 'Axe', emoji: '๐Ÿช“', }, { name: ['fledermaus'], - uniqueName: 'Bat', emoji: '๐Ÿฆ‡', }, { name: ['schlagendes herz'], - uniqueName: 'Beating Heart', emoji: '๐Ÿ’“', }, { name: ['schwarzes herz'], - uniqueName: 'Black Heart', emoji: '๐Ÿ–ค', }, { name: ['schwarze katze'], - uniqueName: 'Black Cat', emoji: '๐Ÿˆโ€โฌ›', }, { name: ['blut'], - uniqueName: 'Blood', emoji: '๐Ÿฉธ', }, { name: ['blutstropfen'], - uniqueName: 'Drop of Blood', emoji: '๐Ÿฉธ', }, { name: ['knochen'], - uniqueName: 'Bone', emoji: '๐Ÿฆด', }, { name: ['gehirn', 'brain'], - uniqueName: 'Brain', emoji: '๐Ÿง ', }, { name: ['besen'], - uniqueName: 'Broom', emoji: '๐Ÿงน', }, { name: ['kerze'], - uniqueName: 'Candle', emoji: '๐Ÿ•ฏ', }, { name: ['candy', 'bonbon', 'sรผรŸigkeit'], - uniqueName: 'Candy', emoji: '๐Ÿฌ', }, { name: ['ketten'], - uniqueName: 'Chains', emoji: 'โ›“', }, { name: ['schokoladenriegel', 'schokoriegel'], - uniqueName: 'Chocolate Bar', emoji: '๐Ÿซ', }, { name: ['blitz', 'gewitterwolke'], - uniqueName: 'Cloud with Lightning', emoji: '๐ŸŒฉ', }, { name: ['clown'], - uniqueName: 'Clown Face', emoji: '๐Ÿคก', }, { name: ['sarg'], - uniqueName: 'Coffin', emoji: 'โšฐ', }, { name: ['kristallkugel', 'hellseherkugel'], - uniqueName: 'Crystal Ball', emoji: '๐Ÿ”ฎ', }, { name: ['messer'], - uniqueName: 'Dagger', emoji: '๐Ÿ—ก', }, // Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 // { // name: ['verkleidetes gesicht', 'verkleidet'], -// uniqueName: 'Disguised Face', // emoji: '๐Ÿฅธ', // }, { name: ['verlassenes haus', 'geisterhaus', 'geistervilla'], - uniqueName: 'Derelict House', emoji: '๐Ÿš', }, { name: ['ohr'], - uniqueName: 'Ear', emoji: '๐Ÿ‘‚', }, { name: ['auge'], - uniqueName: 'Eye', emoji: '๐Ÿ‘๏ธ', }, { name: ['augen'], - uniqueName: 'Eyes', emoji: '๐Ÿ‘€', }, { name: ['untersuchen'], - uniqueName: 'Detective', emoji: '๐Ÿ•ต', }, { name: ['elf'], - uniqueName: 'Elf', emoji: '๐Ÿง', }, { name: ['schrei', 'schreie', 'schreien'], - uniqueName: 'Face Screaming in Fear', emoji: '๐Ÿ˜ฑ', }, { name: ['mumie'], - uniqueName: 'Face with Head-Bandage', emoji: '๐Ÿค•', }, { name: ['fee'], - uniqueName: 'Fairy', emoji: '๐Ÿงš', }, { name: ['angst', 'รคngstlich'], - uniqueName: 'Fearful Face', emoji: '๐Ÿ˜จ', }, { name: ['feuer'], - uniqueName: 'Fire', emoji: '๐Ÿ”ฅ', }, { name: ['ufo', 'fliegende untertasse'], - uniqueName: 'Flying Saucer', emoji: '๐Ÿ›ธ', }, { name: ['nebel', 'nebelig', 'neblig'], - uniqueName: 'Fog', emoji: '๐ŸŒซ๏ธ', }, { name: ['fuรŸ'], - uniqueName: 'Foot', emoji: '๐Ÿฆถ', }, { name: ['fuรŸspuren'], - uniqueName: 'Footprints', emoji: '๐Ÿ‘ฃ', }, { name: ['vollmond'], - uniqueName: 'Full Moon', emoji: '๐ŸŒ•', }, { name: ['urne'], - uniqueName: 'Funeral Urn', emoji: 'โšฑ', }, { name: ['genie'], - uniqueName: 'Genie', emoji: '๐Ÿงž', }, { name: ['goblin'], - uniqueName: 'Goblin', emoji: '๐Ÿ‘บ', }, { name: ['geist'], - uniqueName: 'Ghost', emoji: '๐Ÿ‘ป', }, { name: ['grรผnes herz'], - uniqueName: 'Green Heart', emoji: '๐Ÿ’š', }, // Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 // { -// name: ['headstone'], -// uniqueName: 'Headstone', +// name: ['grabstein', 'grab'], // emoji: '๐Ÿชฆ', // }, { name: ['hochspannung', 'spannend'], - uniqueName: 'High Voltage', emoji: 'โšก', }, { name: ['halloween', 'kรผrbis', 'hellowien'], - uniqueName: 'Jack-O-Lantern', emoji: '๐ŸŽƒ', }, { name: ['bein'], - uniqueName: 'Leg', emoji: '๐Ÿฆต', }, { name: ['lollipop', 'lutscher'], - uniqueName: 'Lollipop', emoji: '๐Ÿญ', }, { name: ['zauberhaft', 'hexer', 'magier', 'zauberer', 'zaubrer'], - uniqueName: 'Mage', emoji: '๐Ÿง™', }, { name: ['meerjungfrau'], - uniqueName: 'Mermaid', emoji: '๐Ÿงœโ€โ™€๏ธ', }, { name: ['meermann'], - uniqueName: 'Merman', emoji: '๐Ÿงœโ€โ™‚๏ธ', }, { name: ['meermensch'], - uniqueName: 'Merperson', emoji: '๐Ÿงœ', }, { name: ['neumond', 'neumondgesicht'], - uniqueName: 'New Moon Face', emoji: '๐ŸŒš', }, { name: ['sternennacht', 'nacht', 'sternenklare nacht'], - uniqueName: 'Night with Stars', emoji: '๐ŸŒƒ', }, { name: ['ogre', 'oger'], - uniqueName: 'Ogre', emoji: '๐Ÿ‘น', }, { name: ['oranges herz', 'orangenes herz'], - uniqueName: 'Orange Heart', emoji: '๐Ÿงก', }, { name: ['eule'], - uniqueName: 'Owl', emoji: '๐Ÿฆ‰', }, { name: ['verkleidung', 'verkleidungen', 'verkleiden', 'verkleide' ], - uniqueName: 'Performing Arts', emoji: '๐ŸŽญ', }, { name: ['schwebende person im anzug', 'schweben', 'schwebe', 'schwebt'], - uniqueName: 'Person In Suit Levitating', emoji: '๐Ÿ•ด', }, { name: ['prinzessin'], - uniqueName: 'Princess', emoji: '๐Ÿ‘ธ', }, { name: ['roboter', 'maschinenmann', 'bot'], - uniqueName: 'Robot', emoji: '๐Ÿค–', }, { name: ['schรคdel', 'totenschรคdel', 'totenkopf'], - uniqueName: 'Skull', emoji: '๐Ÿ’€', }, { name: ['totenkopf mit knochen', 'totenkopfflagge', 'pirat'], - uniqueName: 'Skull and Crossbones', emoji: 'โ˜ ', }, { name: ['lรคchelnder teufel', 'teufel', 'teuflisch'], - uniqueName: 'Smiling Face with Horns', emoji: '๐Ÿ˜ˆ', }, { name: ['spinne'], - uniqueName: 'Spider', emoji: '๐Ÿ•ท', }, { name: ['netz', 'spinnennetz'], - uniqueName: 'Spider Web', emoji: '๐Ÿ•ธ', }, { name: ['zunge'], - uniqueName: 'Tongue', emoji: '๐Ÿ‘…', }, { name: ['einhorn'], - uniqueName: 'Unicorn', emoji: '๐Ÿฆ„', }, { name: ['vampir'], - uniqueName: 'Vampire', emoji: '๐Ÿง›', }, { name: ['blume', 'blรผte', 'verwelkt'], - uniqueName: 'Wilted Flower', emoji: '๐Ÿฅ€', }, { name: ['elfin'], - uniqueName: 'Woman Elf', emoji: '๐Ÿงโ€โ™€๏ธ', }, { name: ['weibliche genie'], - uniqueName: 'Woman Genie', emoji: '๐Ÿงžโ€โ™€๏ธ', }, { name: ['hexe', 'magierin', 'zauberin', 'zaubrerin'], - uniqueName: 'Woman Mage', emoji: '๐Ÿง™โ€โ™€๏ธ', }, { name: ['vampirin'], - uniqueName: 'Woman Vampire', emoji: '๐Ÿง›โ€โ™€๏ธ', }, { name: ['weiblicher zombie'], - uniqueName: 'Woman Zombie', emoji: '๐ŸงŸโ€โ™€๏ธ', }, { name: ['zombie', 'untote'], - uniqueName: 'Zombie', emoji: '๐ŸงŸ', } ], From 607044cecaf56d120f472880b564d868dea711af Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Fri, 9 Oct 2020 17:39:02 +0200 Subject: [PATCH 16/40] :art: Embeded trick or treat command --- commands/Text/trickortreat.js | 51 ++++++++++++++++++++++++----------- config.example.json | 3 ++- models/trickortreats.js | 5 ++-- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/commands/Text/trickortreat.js b/commands/Text/trickortreat.js index 80cba76..ab298ce 100644 --- a/commands/Text/trickortreat.js +++ b/commands/Text/trickortreat.js @@ -1,7 +1,7 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config.json') + const { treat, trick, createTrickOrTreat, getTrickOrTreat } = require('../../models/trickortreats') -const { prefix } = require('../../config.json') -const { readdirSync } = require('fs') -const { resolve } = require('path') const isToday = (someDate) => { const today = new Date() @@ -18,10 +18,10 @@ module.exports = { config: { name: 'Trick or Treat', usage: `${prefix}trickortreat`, - description: 'Gives you candy or scares you', + description: 'Gives you candy or scares you ๐Ÿ˜ˆ', command: 'trickortreat', - aliases: [], - displayHelp: false, + aliases: ['tot'], + displayHelp: true, }, run: async (bot, message, args) => { @@ -36,20 +36,41 @@ module.exports = { if (Math.random() >= 0.5) { trickOrTreat = await trick(message.author.id) - message.reply( - `:smiling_imp: Oh no! You have been tricked! You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. Better luck tomorrow!` - ) + let embed = await new MessageEmbed() + .setTitle(':smiling_imp: Oh no!, You have been tricked!') + .setColor(colors.info) + .setDescription('Better luck tomorrow!') + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Treats', trickOrTreat.tricks, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + await message.channel.send(embed) } else { trickOrTreat = await treat(message.author.id) - message.reply( - `:candy: Sweet, sweet candy! You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. There will be more candy up for grabs tomorrow!` - ) + let embed = await new MessageEmbed() + .setTitle(':candy: Sweet, sweet candy!') + .setColor(colors.error) + .setDescription('There will be more candy up for grabs tomorrow!') + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Treats', trickOrTreat.tricks, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + await message.channel.send(embed) } } else { - message.author.send( - `It looks like you have already played today. You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. There will be more candy up for grabs tomorrow!` - ) + const embed = new MessageEmbed() + .setTitle('It looks like you have already played today.') + .setColor(colors.primary) + .setDescription('There will be more candy up for grabs tomorrow!') + .addField(':candy: Candys', trickOrTreat.tricks, true) + .addField(':smiling_imp: Treats', trickOrTreat.treats, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + message.channel.send(embed) } }, } diff --git a/config.example.json b/config.example.json index a4495ba..d467aa8 100644 --- a/config.example.json +++ b/config.example.json @@ -8,6 +8,7 @@ "colors": { "primary": "#FF6403", "success": "#2ECC71", - "error": "#E74C3C" + "error": "#E74C3C", + "info": "#7C5398" } } \ No newline at end of file diff --git a/models/trickortreats.js b/models/trickortreats.js index 9231097..1795695 100644 --- a/models/trickortreats.js +++ b/models/trickortreats.js @@ -9,6 +9,7 @@ db.defaults({ trickortreats: [] }).write() // Find a trick or treat exports.getTrickOrTreat = (userId) => { + console.log(userId) return db.get('trickortreats').find({ userId: userId }).value() } @@ -21,7 +22,7 @@ exports.createTrickOrTreat = (userId) => { exports.trick = (userId) => { const trickOrTreat = db.get('trickortreats').find({ userId: userId }) - trickOrTreat.assign({ tricks: trickOrTreat.value().tricks++, lastPlayed: new Date() }).write() + trickOrTreat.assign({ tricks: trickOrTreat.value().tricks + 1, lastPlayed: new Date() }).write() return this.getTrickOrTreat(userId) } @@ -30,7 +31,7 @@ exports.trick = (userId) => { exports.treat = (userId) => { const trickOrTreat = db.get('trickortreats').find({ userId: userId }) - trickOrTreat.assign({ treats: trickOrTreat.value().treats++, lastPlayed: new Date() }).write() + trickOrTreat.assign({ treats: trickOrTreat.value().treats + 1, lastPlayed: new Date() }).write() return this.getTrickOrTreat(userId) } From ae8e1adc749e615cb67af9433ff22d5cfc669c3b Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Fri, 9 Oct 2020 17:42:21 +0200 Subject: [PATCH 17/40] :art: Embeded play sound command --- commands/Sound/playsound.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/commands/Sound/playsound.js b/commands/Sound/playsound.js index fb7339e..f900595 100644 --- a/commands/Sound/playsound.js +++ b/commands/Sound/playsound.js @@ -1,3 +1,4 @@ +const { MessageEmbed } = require('discord.js') const { prefix } = require('../../config.json') const { readdirSync } = require('fs') const { resolve } = require('path') @@ -6,10 +7,10 @@ module.exports = { config: { name: 'Boo Sound', usage: `${prefix}booh`, - description: 'Display this menu', + description: 'Joins your voice channel and scares you', command: 'booh', aliases: ['buh', 'scare'], - displayHelp: false, + displayHelp: true, }, run: async (bot, message, args) => { @@ -27,7 +28,15 @@ module.exports = { connection.voice.channel.leave() }) } else { - message.author.send('How can I scare your companions without you beeing present in the voice channel?') + const embed = new MessageEmbed() + .setTitle('How can I scare your companions without you beeing present in the voice channel?') + .setColor(colors.primary) + + message.channel.send(embed).then((m) => { + setTimeout(() => { + m.delete() + }, 5000) + }) } }, } From e8443d1b86928b4dfcffe3d99578de8443cd75e4 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Fri, 9 Oct 2020 18:09:34 +0200 Subject: [PATCH 18/40] Add a stats command --- commands/Info/stats.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 commands/Info/stats.js diff --git a/commands/Info/stats.js b/commands/Info/stats.js new file mode 100644 index 0000000..44dd9ec --- /dev/null +++ b/commands/Info/stats.js @@ -0,0 +1,32 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config.json') + +module.exports = { + config: { + command: 'stats', + name: 'Stat', + description: 'Give you some statistics about the bot', + usage: `${prefix}stats`, + displayHelp: true, + }, + + run: async (bot, message, args) => { + const memoryStats = process.memoryUsage() + + const embed = new MessageEmbed() + .setColor(colors.primary) + .setAuthor(`Stats - ${bot.user.username}`, bot.user.avatarURL({ dynamic: true })) + .addField('Number of servers ยฌ', bot.guilds.cache.size.toLocaleString(), true) + .addField( + 'Number of users ยฌ', + bot.guilds.cache.reduce((mem, g) => (mem += g.memberCount), 0), + true + ) + .addField('Number of emojis ยฌ', bot.emojis.cache.size, true) + .addField('Number of channels ยฌ', bot.channels.cache.size, true) + .addField('Memory usage ยฌ', `${Math.ceil(memoryStats.heapUsed / 1048576)} Mo`, true) + .setFooter(`Requested by ${message.author.username}`, message.author.avatarURL({ dynamic: true })) + + message.channel.send(embed) + }, +} From f3990d46e668df447e259361208df0c646e95cd0 Mon Sep 17 00:00:00 2001 From: Xenophloxic <64376702+Xenophloxic@users.noreply.github.com> Date: Sun, 11 Oct 2020 17:20:12 -0700 Subject: [PATCH 19/40] Add some fooBar --- lang/ar.js | 34 ++++++++++++++++++++++++++++++++++ lang/tr.js | 34 ++++++++++++++++++++++++++++++++++ lang/zh.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 lang/ar.js create mode 100644 lang/tr.js create mode 100644 lang/zh.js diff --git a/lang/ar.js b/lang/ar.js new file mode 100644 index 0000000..4d89388 --- /dev/null +++ b/lang/ar.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'ar', //Arabic + words: [ + { + // Please do not delete this one ๐Ÿ™ + name: 'ู…ุฑุนุจ', + emoji: '761602615326146590', + }, + { + name: ['ุญู„ูˆู‰', 'ุญู„ูˆูŠุงุช'], + emoji: '๐Ÿฌ', + }, + { + name: 'ุดุจุญ', + emoji: '๐Ÿ‘ป', + }, + { + name: 'ุนูŠุฏ ุงู„ุฑุนุจ', + emoji: '๐ŸŽƒ', + }, + { + name: 'ู…ุตุงุต ุฏู…ุงุก', + emoji: '๐Ÿง›๐Ÿปโ€โ™‚๏ธ', + }, + { + name: 'ุณุงุญุฑ', + emoji: '๐Ÿง™', + }, + { + name: 'ุงู„ุงู…ูˆุงุช ุงู„ุงุญูŠุงุก', + emoji: '๐ŸงŸ', + }, + ], + } \ No newline at end of file diff --git a/lang/tr.js b/lang/tr.js new file mode 100644 index 0000000..ba78e44 --- /dev/null +++ b/lang/tr.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'tr', //Turkish + words: [ + { + // Please do not delete this one ๐Ÿ™ + name: 'รผrpertici', + emoji: '761602615326146590', + }, + { + name: ['karamela', 'ลžeker'], + emoji: '๐Ÿฌ', + }, + { + name: ['hayalet', 'ruh'], + emoji: '๐Ÿ‘ป', + }, + { + name: 'cadฤฑlar bayramฤฑ', + emoji: '๐ŸŽƒ', + }, + { + name: 'vampir', + emoji: '๐Ÿง›๐Ÿปโ€โ™‚๏ธ', + }, + { + name: ['sihirbaz', 'bรผyรผcรผ', 'dahi'], + emoji: '๐Ÿง™', + }, + { + name: ['zombi', 'yaลŸayan รถlรผ', 'yฤฑlan tanrฤฑ'], + emoji: '๐ŸงŸ', + }, + ], + } \ No newline at end of file diff --git a/lang/zh.js b/lang/zh.js new file mode 100644 index 0000000..3dcd0e3 --- /dev/null +++ b/lang/zh.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'zh', // Mandrin Chinese + words: [ + { + // Please do not delete this one ๐Ÿ™ + name: ['ๅนฝ็ต่ˆฌ็š„', 'ๅฎณๆ€•็š„'], + emoji: '761602615326146590', + }, + { + name: ['็ณ–', '็ณ–ๆžœ'], + emoji: '๐Ÿฌ', + }, + { + name: ['้ฌผ', 'ๅนปๅฝฑ'], + emoji: '๐Ÿ‘ป', + }, + { + name: 'ไธ‡ๅœฃ่Š‚', + emoji: '๐ŸŽƒ', + }, + { + name: 'ๅธ่ก€้ฌผ', + emoji: '๐Ÿง›๐Ÿปโ€โ™‚๏ธ', + }, + { + name: ['ๅทซๅธˆ', '่ง‹'], + emoji: '๐Ÿง™', + }, + { + name: 'ๅƒตๅฐธ', + emoji: '๐ŸงŸ', + }, + ], + } \ No newline at end of file From bb725c630ca6f4735e42aa9175cbfc377a6ea921 Mon Sep 17 00:00:00 2001 From: illusi0nary Date: Mon, 12 Oct 2020 19:26:13 +0200 Subject: [PATCH 20/40] Docker Preps + Automation + Trickt&Treat Feature --- .eslintrc.js | 2 +- .github/workflows/build-bot.yml | 23 + .github/workflows/deploy-bot.yml | 24 + .gitignore | 6 +- Makefile | 14 + README.md | 5 +- .../commands}/Configuration/setlang.js | 2 +- {commands => app/commands}/Info/help.js | 4 +- {commands => app/commands}/Info/invite.js | 2 +- {commands => app/commands}/Info/ping.js | 2 +- {commands => app/commands}/Info/support.js | 2 +- {commands => app/commands}/Sound/playsound.js | 2 +- {commands => app/commands}/Test/emitgd.js | 0 {commands => app/commands}/Test/emitgr.js | 0 .../commands}/Text/trickortreat.js | 5 +- app/config/.gitkeep | 0 core.js => app/core.js | 2 +- app/db/.gitkeep | 0 {db => app/db}/servers.json | 2 +- app/db/trickortreats.json | 10 + {events => app/events}/guildCreate.js | 2 +- {events => app/events}/guildDelete.js | 2 +- {events => app/events}/message.js | 2 +- {events => app/events}/ready.js | 2 +- {handlers => app/handlers}/command.js | 0 {handlers => app/handlers}/event.js | 0 {images => app/images}/spookyBot-emoji.png | Bin {images => app/images}/spookyBot.png | Bin {lang => app/lang}/ca.js | 0 {lang => app/lang}/de.js | 0 {lang => app/lang}/en.js | 0 {lang => app/lang}/es.js | 0 {lang => app/lang}/fr.js | 0 {lang => app/lang}/gr.js | 0 {lang => app/lang}/hi.js | 0 {lang => app/lang}/nl.js | 0 {lang => app/lang}/pt.js | 0 {lang => app/lang}/sv.js | 0 {models => app/models}/servers.js | 3 +- {models => app/models}/trickortreats.js | 4 +- {sounds => app/sounds}/batR.wav | Bin {sounds => app/sounds}/boo_laughR.wav | Bin {sounds => app/sounds}/chainsawR.wav | Bin {sounds => app/sounds}/creaky_doorR.wav | Bin {sounds => app/sounds}/entrance_mixR.wav | Bin {sounds => app/sounds}/ghostR.wav | Bin {sounds => app/sounds}/howlin_wolfR.wav | Bin {sounds => app/sounds}/lab2XrcR.wav | Bin {sounds => app/sounds}/mnstrX.wav | Bin {sounds => app/sounds}/noreturnR.wav | Bin {sounds => app/sounds}/ogreR.wav | Bin {sounds => app/sounds}/spooky_skeleton.mp3 | Bin {sounds => app/sounds}/thunderR.wav | Bin {sounds => app/sounds}/way_scaryR.wav | Bin {sounds => app/sounds}/welcomeR.wav | Bin {sounds => app/sounds}/windR.wav | Bin {sounds => app/sounds}/wrong_doorR.wav | Bin {utils => app/utils}/reactMessage.js | 0 db/trickortreats.json | 3 - docker-compose.dev.yml | 13 + docker/spooky-node/DockerfileDev | 16 + docker/spooky-node/DockerfileProd | 14 + package.json | 6 +- yarn.lock | 1929 ----------------- 64 files changed, 144 insertions(+), 1959 deletions(-) create mode 100644 .github/workflows/build-bot.yml create mode 100644 .github/workflows/deploy-bot.yml create mode 100644 Makefile rename {commands => app/commands}/Configuration/setlang.js (96%) rename {commands => app/commands}/Info/help.js (89%) rename {commands => app/commands}/Info/invite.js (92%) rename {commands => app/commands}/Info/ping.js (91%) rename {commands => app/commands}/Info/support.js (90%) rename {commands => app/commands}/Sound/playsound.js (94%) rename {commands => app/commands}/Test/emitgd.js (100%) rename {commands => app/commands}/Test/emitgr.js (100%) rename {commands => app/commands}/Text/trickortreat.js (93%) create mode 100644 app/config/.gitkeep rename core.js => app/core.js (90%) create mode 100644 app/db/.gitkeep rename {db => app/db}/servers.json (90%) create mode 100644 app/db/trickortreats.json rename {events => app/events}/guildCreate.js (88%) rename {events => app/events}/guildDelete.js (88%) rename {events => app/events}/message.js (96%) rename {events => app/events}/ready.js (92%) rename {handlers => app/handlers}/command.js (100%) rename {handlers => app/handlers}/event.js (100%) rename {images => app/images}/spookyBot-emoji.png (100%) rename {images => app/images}/spookyBot.png (100%) rename {lang => app/lang}/ca.js (100%) rename {lang => app/lang}/de.js (100%) rename {lang => app/lang}/en.js (100%) rename {lang => app/lang}/es.js (100%) rename {lang => app/lang}/fr.js (100%) rename {lang => app/lang}/gr.js (100%) rename {lang => app/lang}/hi.js (100%) rename {lang => app/lang}/nl.js (100%) rename {lang => app/lang}/pt.js (100%) rename {lang => app/lang}/sv.js (100%) rename {models => app/models}/servers.js (86%) rename {models => app/models}/trickortreats.js (89%) rename {sounds => app/sounds}/batR.wav (100%) rename {sounds => app/sounds}/boo_laughR.wav (100%) rename {sounds => app/sounds}/chainsawR.wav (100%) rename {sounds => app/sounds}/creaky_doorR.wav (100%) rename {sounds => app/sounds}/entrance_mixR.wav (100%) rename {sounds => app/sounds}/ghostR.wav (100%) rename {sounds => app/sounds}/howlin_wolfR.wav (100%) rename {sounds => app/sounds}/lab2XrcR.wav (100%) rename {sounds => app/sounds}/mnstrX.wav (100%) rename {sounds => app/sounds}/noreturnR.wav (100%) rename {sounds => app/sounds}/ogreR.wav (100%) rename {sounds => app/sounds}/spooky_skeleton.mp3 (100%) rename {sounds => app/sounds}/thunderR.wav (100%) rename {sounds => app/sounds}/way_scaryR.wav (100%) rename {sounds => app/sounds}/welcomeR.wav (100%) rename {sounds => app/sounds}/windR.wav (100%) rename {sounds => app/sounds}/wrong_doorR.wav (100%) rename {utils => app/utils}/reactMessage.js (100%) delete mode 100644 db/trickortreats.json create mode 100644 docker-compose.dev.yml create mode 100644 docker/spooky-node/DockerfileDev create mode 100644 docker/spooky-node/DockerfileProd delete mode 100644 yarn.lock diff --git a/.eslintrc.js b/.eslintrc.js index c10a964..65ab9b2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,7 +15,7 @@ module.exports = { }, overrides: [ { - files: ['lang/*.js'], + files: ['app/lang/*.js'], rules: { 'require-jsdoc': 'off', }, diff --git a/.github/workflows/build-bot.yml b/.github/workflows/build-bot.yml new file mode 100644 index 0000000..aa0cdd7 --- /dev/null +++ b/.github/workflows/build-bot.yml @@ -0,0 +1,23 @@ +name: Build Workflow +on: + push: + branches: + - main +jobs: + job_one: + name: Build and push docker images + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Build docker-image + env: + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + docker login -u $DOCKER_USER -p $DOCKER_PASSWORD + docker build -f ./docker/spooky-node/DockerfileProd --build-arg NODE_VERSION=12.18.2 -t spookybot/spookybot:latest -t spookybot/spookybot:${{github.run_number}} . + docker push spookybot/spookybot:${{github.run_number}} + docker push spookybot/spookybot:latest + docker logout + + diff --git a/.github/workflows/deploy-bot.yml b/.github/workflows/deploy-bot.yml new file mode 100644 index 0000000..394d66f --- /dev/null +++ b/.github/workflows/deploy-bot.yml @@ -0,0 +1,24 @@ +name: Deployment Workflow +on: + workflow_dispatch: + inputs: + tags: + description: 'Tag' +jobs: + deploy_prod_bot: + runs-on: ubuntu-latest + steps: + - uses: appleboy/ssh-action@master + name: deploy to prod + with: + host: ${{ secrets.SSH_IP }} + port: ${{ secrets.SSH_PORT }} + username: spookybot + key: ${{ secrets.SSH_KEY }} + script: | + docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + docker pull spookybot/spookybot:latest + docker-compose -f /home/spookybot/docker-compose.yml down -v + docker-compose -f /home/spookybot/docker-compose.yml up -d + docker logout + diff --git a/.gitignore b/.gitignore index c35a417..3b16969 100644 --- a/.gitignore +++ b/.gitignore @@ -15,13 +15,15 @@ jspm_packages/ # Optional eslint cache .eslintcache +.eslintrc.js # Yarn Integrity file .yarn-integrity # config file -config.json - +app/config/config.json # IDE .idea *.iml + + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..147cca7 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +DOCKERCOMPOSE_DEV=-f docker-compose.dev.yml + + +.PHONY: build_dev_image +build_dev_image: + docker build -f ./docker/spooky-node/DockerfileDev -t spookybot:dev . + +.PHONY: startup_dev +startup_dev: + docker-compose ${DOCKERCOMPOSE_DEV} up -d + +.PHONY: stop_dev +stop_dev: + docker-compose ${DOCKERCOMPOSE_DEV} down -v diff --git a/README.md b/README.md index 027a5d9..62e8119 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,10 @@ You can see that the `emoji` element is an emoji, but you can also use a custom ## ๐Ÿ’ป Testing locally 1. Create a bot [on the Discord developer portal](https://discord.com/developers/applications), 2. Create a webhook on your own discord server [by folloing this tutorial](https://docs.gitlab.com/ee/user/project/integrations/discord_notifications.html), -3. Copy the `config.example.json` from the project to `config.json` and fill in the gaps with the information from the bot and the webhook. The first token is on the bot page accessed from the side of the Discord Developer Portal, and the webook information is found on the page when you navigate to the webhook url, +3. Copy the `config.example.json` from the project to `app/config/config.json` and fill in the gaps with the information from the bot and the webhook. The first token is on the bot page accessed from the side of the Discord Developer Portal, and the webook information is found on the page when you navigate to the webhook url, 4. Invite your dev bot to your server by [following this url](https://discord.com/oauth2/authorize?client_id=761568927188123669&scope=bot&permissions=1141124160), replacing the client id with your bot's client id (found on it's general information page), and the permissions with the Permission Integer created in the Developer Portal as you select permissions for your bot, -5. Once these steps are setup, simply run `yarn install` and `npm run dev` from the terminal in the root directory of the repo, +5. Once these steps are setup, simply run `make startup_dev` from the terminal in the root directory of the repo, +5.1 If you want to install node modules you could just add it into your local package.json and run the `make build_dev_image` after that you need to recreate the container. 6. Test the bot is connected by running `help` to get a list of commands, and then initialize the DB by running `emitgc`. It should then respond with "Join with <#> users, 7. Test that the bot reacts to comments by typing one of the words in `lang/.js`. The bot should respond with an emoji! diff --git a/commands/Configuration/setlang.js b/app/commands/Configuration/setlang.js similarity index 96% rename from commands/Configuration/setlang.js rename to app/commands/Configuration/setlang.js index 3c0b61d..7d5582c 100644 --- a/commands/Configuration/setlang.js +++ b/app/commands/Configuration/setlang.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') const { readdirSync } = require('fs') const { resolve } = require('path') diff --git a/commands/Info/help.js b/app/commands/Info/help.js similarity index 89% rename from commands/Info/help.js rename to app/commands/Info/help.js index 79fc8f2..2a6a33c 100644 --- a/commands/Info/help.js +++ b/app/commands/Info/help.js @@ -1,6 +1,6 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') -const { version } = require('../../package.json') +const { prefix, colors } = require('../../config/config.json') +const { version } = require('../../../package.json') module.exports = { config: { diff --git a/commands/Info/invite.js b/app/commands/Info/invite.js similarity index 92% rename from commands/Info/invite.js rename to app/commands/Info/invite.js index 8f0f252..e2746c6 100644 --- a/commands/Info/invite.js +++ b/app/commands/Info/invite.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/commands/Info/ping.js b/app/commands/Info/ping.js similarity index 91% rename from commands/Info/ping.js rename to app/commands/Info/ping.js index d5a5a3b..15d5991 100644 --- a/commands/Info/ping.js +++ b/app/commands/Info/ping.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/commands/Info/support.js b/app/commands/Info/support.js similarity index 90% rename from commands/Info/support.js rename to app/commands/Info/support.js index dc5f855..85f8391 100644 --- a/commands/Info/support.js +++ b/app/commands/Info/support.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/commands/Sound/playsound.js b/app/commands/Sound/playsound.js similarity index 94% rename from commands/Sound/playsound.js rename to app/commands/Sound/playsound.js index fb7339e..1d30fde 100644 --- a/commands/Sound/playsound.js +++ b/app/commands/Sound/playsound.js @@ -1,4 +1,4 @@ -const { prefix } = require('../../config.json') +const { prefix } = require('../../config/config.json') const { readdirSync } = require('fs') const { resolve } = require('path') diff --git a/commands/Test/emitgd.js b/app/commands/Test/emitgd.js similarity index 100% rename from commands/Test/emitgd.js rename to app/commands/Test/emitgd.js diff --git a/commands/Test/emitgr.js b/app/commands/Test/emitgr.js similarity index 100% rename from commands/Test/emitgr.js rename to app/commands/Test/emitgr.js diff --git a/commands/Text/trickortreat.js b/app/commands/Text/trickortreat.js similarity index 93% rename from commands/Text/trickortreat.js rename to app/commands/Text/trickortreat.js index 80cba76..8903df8 100644 --- a/commands/Text/trickortreat.js +++ b/app/commands/Text/trickortreat.js @@ -1,7 +1,6 @@ const { treat, trick, createTrickOrTreat, getTrickOrTreat } = require('../../models/trickortreats') -const { prefix } = require('../../config.json') -const { readdirSync } = require('fs') -const { resolve } = require('path') +const { prefix } = require('../../config/config.json') + const isToday = (someDate) => { const today = new Date() diff --git a/app/config/.gitkeep b/app/config/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/core.js b/app/core.js similarity index 90% rename from core.js rename to app/core.js index edb54d1..d9c5ab3 100644 --- a/core.js +++ b/app/core.js @@ -1,6 +1,6 @@ const { Client, Collection, WebhookClient } = require('discord.js') -const { token, webhook } = require('./config.json') +const { token, webhook } = require('./config/config.json') const bot = new Client() diff --git a/app/db/.gitkeep b/app/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/db/servers.json b/app/db/servers.json similarity index 90% rename from db/servers.json rename to app/db/servers.json index b69ad4f..0e74b2b 100644 --- a/db/servers.json +++ b/app/db/servers.json @@ -1,3 +1,3 @@ { "servers": [] -} +} \ No newline at end of file diff --git a/app/db/trickortreats.json b/app/db/trickortreats.json new file mode 100644 index 0000000..f1dda32 --- /dev/null +++ b/app/db/trickortreats.json @@ -0,0 +1,10 @@ +{ + "trickortreats": [ + { + "userId": "306856370454396928", + "tricks": 0, + "treats": 0, + "lastPlayed": "2020-10-06T22:55:33.107Z" + } + ] +} \ No newline at end of file diff --git a/events/guildCreate.js b/app/events/guildCreate.js similarity index 88% rename from events/guildCreate.js rename to app/events/guildCreate.js index c2196a3..5938fdd 100644 --- a/events/guildCreate.js +++ b/app/events/guildCreate.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../config.json') +const { colors } = require('../config/config.json') const { createGuild } = require('../models/servers') diff --git a/events/guildDelete.js b/app/events/guildDelete.js similarity index 88% rename from events/guildDelete.js rename to app/events/guildDelete.js index 138ba61..e790eb2 100644 --- a/events/guildDelete.js +++ b/app/events/guildDelete.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../config.json') +const { colors } = require('../config/config.json') const { deleteGuild } = require('../models/servers') diff --git a/events/message.js b/app/events/message.js similarity index 96% rename from events/message.js rename to app/events/message.js index c8eef78..011a60c 100644 --- a/events/message.js +++ b/app/events/message.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../config.json') +const { prefix, colors } = require('../config/config.json') const reactMessage = require('../utils/reactMessage') diff --git a/events/ready.js b/app/events/ready.js similarity index 92% rename from events/ready.js rename to app/events/ready.js index cd2b54c..8e3e66c 100644 --- a/events/ready.js +++ b/app/events/ready.js @@ -1,4 +1,4 @@ -const { prefix } = require('../config.json') +const { prefix } = require('../config/config.json') let statusInterval = 0 if (process.env.NODE_ENV === 'dev') { diff --git a/handlers/command.js b/app/handlers/command.js similarity index 100% rename from handlers/command.js rename to app/handlers/command.js diff --git a/handlers/event.js b/app/handlers/event.js similarity index 100% rename from handlers/event.js rename to app/handlers/event.js diff --git a/images/spookyBot-emoji.png b/app/images/spookyBot-emoji.png similarity index 100% rename from images/spookyBot-emoji.png rename to app/images/spookyBot-emoji.png diff --git a/images/spookyBot.png b/app/images/spookyBot.png similarity index 100% rename from images/spookyBot.png rename to app/images/spookyBot.png diff --git a/lang/ca.js b/app/lang/ca.js similarity index 100% rename from lang/ca.js rename to app/lang/ca.js diff --git a/lang/de.js b/app/lang/de.js similarity index 100% rename from lang/de.js rename to app/lang/de.js diff --git a/lang/en.js b/app/lang/en.js similarity index 100% rename from lang/en.js rename to app/lang/en.js diff --git a/lang/es.js b/app/lang/es.js similarity index 100% rename from lang/es.js rename to app/lang/es.js diff --git a/lang/fr.js b/app/lang/fr.js similarity index 100% rename from lang/fr.js rename to app/lang/fr.js diff --git a/lang/gr.js b/app/lang/gr.js similarity index 100% rename from lang/gr.js rename to app/lang/gr.js diff --git a/lang/hi.js b/app/lang/hi.js similarity index 100% rename from lang/hi.js rename to app/lang/hi.js diff --git a/lang/nl.js b/app/lang/nl.js similarity index 100% rename from lang/nl.js rename to app/lang/nl.js diff --git a/lang/pt.js b/app/lang/pt.js similarity index 100% rename from lang/pt.js rename to app/lang/pt.js diff --git a/lang/sv.js b/app/lang/sv.js similarity index 100% rename from lang/sv.js rename to app/lang/sv.js diff --git a/models/servers.js b/app/models/servers.js similarity index 86% rename from models/servers.js rename to app/models/servers.js index 8e283d3..02c2784 100644 --- a/models/servers.js +++ b/app/models/servers.js @@ -1,7 +1,8 @@ const low = require('lowdb') const FileSync = require('lowdb/adapters/FileSync') +const { resolve } = require('path') -const adapter = new FileSync('db/servers.json') +const adapter = new FileSync(resolve(__dirname, `../db/servers.json`)) const db = low(adapter) // Set some defaults (required if your JSON file is empty) diff --git a/models/trickortreats.js b/app/models/trickortreats.js similarity index 89% rename from models/trickortreats.js rename to app/models/trickortreats.js index 9231097..526d8ea 100644 --- a/models/trickortreats.js +++ b/app/models/trickortreats.js @@ -1,7 +1,7 @@ const low = require('lowdb') const FileSync = require('lowdb/adapters/FileSync') - -const adapter = new FileSync('db/trickortreats.json') +const { resolve } = require('path') +const adapter = new FileSync(resolve(__dirname, `../db/trickortreats.json`)) const db = low(adapter) // Set some defaults (required if your JSON file is empty) diff --git a/sounds/batR.wav b/app/sounds/batR.wav similarity index 100% rename from sounds/batR.wav rename to app/sounds/batR.wav diff --git a/sounds/boo_laughR.wav b/app/sounds/boo_laughR.wav similarity index 100% rename from sounds/boo_laughR.wav rename to app/sounds/boo_laughR.wav diff --git a/sounds/chainsawR.wav b/app/sounds/chainsawR.wav similarity index 100% rename from sounds/chainsawR.wav rename to app/sounds/chainsawR.wav diff --git a/sounds/creaky_doorR.wav b/app/sounds/creaky_doorR.wav similarity index 100% rename from sounds/creaky_doorR.wav rename to app/sounds/creaky_doorR.wav diff --git a/sounds/entrance_mixR.wav b/app/sounds/entrance_mixR.wav similarity index 100% rename from sounds/entrance_mixR.wav rename to app/sounds/entrance_mixR.wav diff --git a/sounds/ghostR.wav b/app/sounds/ghostR.wav similarity index 100% rename from sounds/ghostR.wav rename to app/sounds/ghostR.wav diff --git a/sounds/howlin_wolfR.wav b/app/sounds/howlin_wolfR.wav similarity index 100% rename from sounds/howlin_wolfR.wav rename to app/sounds/howlin_wolfR.wav diff --git a/sounds/lab2XrcR.wav b/app/sounds/lab2XrcR.wav similarity index 100% rename from sounds/lab2XrcR.wav rename to app/sounds/lab2XrcR.wav diff --git a/sounds/mnstrX.wav b/app/sounds/mnstrX.wav similarity index 100% rename from sounds/mnstrX.wav rename to app/sounds/mnstrX.wav diff --git a/sounds/noreturnR.wav b/app/sounds/noreturnR.wav similarity index 100% rename from sounds/noreturnR.wav rename to app/sounds/noreturnR.wav diff --git a/sounds/ogreR.wav b/app/sounds/ogreR.wav similarity index 100% rename from sounds/ogreR.wav rename to app/sounds/ogreR.wav diff --git a/sounds/spooky_skeleton.mp3 b/app/sounds/spooky_skeleton.mp3 similarity index 100% rename from sounds/spooky_skeleton.mp3 rename to app/sounds/spooky_skeleton.mp3 diff --git a/sounds/thunderR.wav b/app/sounds/thunderR.wav similarity index 100% rename from sounds/thunderR.wav rename to app/sounds/thunderR.wav diff --git a/sounds/way_scaryR.wav b/app/sounds/way_scaryR.wav similarity index 100% rename from sounds/way_scaryR.wav rename to app/sounds/way_scaryR.wav diff --git a/sounds/welcomeR.wav b/app/sounds/welcomeR.wav similarity index 100% rename from sounds/welcomeR.wav rename to app/sounds/welcomeR.wav diff --git a/sounds/windR.wav b/app/sounds/windR.wav similarity index 100% rename from sounds/windR.wav rename to app/sounds/windR.wav diff --git a/sounds/wrong_doorR.wav b/app/sounds/wrong_doorR.wav similarity index 100% rename from sounds/wrong_doorR.wav rename to app/sounds/wrong_doorR.wav diff --git a/utils/reactMessage.js b/app/utils/reactMessage.js similarity index 100% rename from utils/reactMessage.js rename to app/utils/reactMessage.js diff --git a/db/trickortreats.json b/db/trickortreats.json deleted file mode 100644 index 79d536c..0000000 --- a/db/trickortreats.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "trickortreats": [] -} \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..ebef1a0 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,13 @@ +version: '3.6' + +services: + spooky-bot: + image: spookybot/spookybot:latest + build: + context: . + dockerfile: docker/spooky-node/DockerfileProd + args: + - NODE_VERSION=12.18.2 + volumes: + - ./app:/spooky/app/:rw + - ./package.json:/spooky/package.json diff --git a/docker/spooky-node/DockerfileDev b/docker/spooky-node/DockerfileDev new file mode 100644 index 0000000..7efe48c --- /dev/null +++ b/docker/spooky-node/DockerfileDev @@ -0,0 +1,16 @@ +ARG NODE_VERSION + +FROM node:${NODE_VERSION} AS build + +COPY . /spooky + +WORKDIR /spooky +RUN npm cache clean --force +RUN rm -rf node_modules +RUN npm install + +FROM node:${NODE_VERSION} +WORKDIR /spooky +COPY --from=build /spooky /spooky + +ENTRYPOINT ["npm", "run", "dev"] diff --git a/docker/spooky-node/DockerfileProd b/docker/spooky-node/DockerfileProd new file mode 100644 index 0000000..50f1768 --- /dev/null +++ b/docker/spooky-node/DockerfileProd @@ -0,0 +1,14 @@ +ARG NODE_VERSION + +FROM node:${NODE_VERSION} + +COPY . /spooky + +WORKDIR /spooky +RUN npm cache clean --force +RUN rm -rf node_modules +RUN npm install --production + +RUN rm -rf app/config +RUN rm -rf app/db +ENTRYPOINT ["npm", "run", "start"] diff --git a/package.json b/package.json index a91ae85..4dffa15 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "spookybot", "version": "1.0.0", "description": "A spooky Discord bot", - "main": "core.js", + "main": "app/core.js", "repository": "git@github.com:LucasCtrl/spookyBot.git", "author": "LucasCtrl ", "license": "MIT", @@ -21,7 +21,7 @@ "prettier": "^2.1.2" }, "scripts": { - "dev": "nodemon --inspect core.js", - "start": "node core.js" + "dev": "nodemon --inspect ./app/core.js", + "start": "node app/core.js" } } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index dd8e4b1..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1929 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@derhuerst/http-basic@^8.2.0": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@derhuerst/http-basic/-/http-basic-8.2.1.tgz#11e3964cf1f2fb40806f9a0fff0c451bb7526093" - integrity sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -"@discordjs/collection@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c" - integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== - -"@discordjs/form-data@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" - integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -"@discordjs/node-pre-gyp@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz#762b3b40be8567186bd7e79084befec4738a9e89" - integrity sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg== - dependencies: - detect-libc "^1.0.3" - mkdirp "^0.5.5" - needle "^2.4.1" - nopt "^4.0.3" - npm-packlist "^1.4.8" - npmlog "^4.1.2" - rc "^1.2.8" - rimraf "^3.0.2" - semver "^7.3.0" - tar "^6.0.2" - -"@discordjs/opus@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@discordjs/opus/-/opus-0.3.2.tgz#7dde2d4541ccfaa451e029f9d8da980286f9f56a" - integrity sha512-T/ubykd4Xi19vDfw7/Oe+iTQBJ28yMI2PQAzK+Zue0PB9OpEYaeIXU7k5255061RwL+rHX9w7P/P2of+x2Vu2A== - dependencies: - "@discordjs/node-pre-gyp" "^0.1.0" - node-addon-api "^2.0.0" - -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.19" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/node@^10.0.3": - version "10.17.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.35.tgz#58058f29b870e6ae57b20e4f6e928f02b7129f56" - integrity sha512-gXx7jAWpMddu0f7a+L+txMplp3FnHl53OhQIF9puXKq3hDGY/GjH+MF04oWnV/adPSCrbtHumDCFwzq2VhltWA== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== - dependencies: - debug "4" - -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caseless@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.2.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -debug@4, debug@^4.0.1, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" - -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -discord.js@^12.3.1: - version "12.3.1" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-12.3.1.tgz#8f58ac17d29b068dbfeb6c01fc7777bacd5324cf" - integrity sha512-mSFyV/mbvzH12UXdS4zadmeUf8IMQOo/YdunubG1wWt1xjWvtaJz/s9CGsFD2B5pTw1W/LXxxUbrQjIZ/xlUdw== - dependencies: - "@discordjs/collection" "^0.1.6" - "@discordjs/form-data" "^3.0.1" - abort-controller "^3.0.0" - node-fetch "^2.6.0" - prism-media "^1.2.2" - setimmediate "^1.0.5" - tweetnacl "^1.0.3" - ws "^7.3.1" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-config-prettier@^6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2" - integrity sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw== - dependencies: - get-stdin "^6.0.0" - -eslint-plugin-prettier@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint@^7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" - integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.3.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -ffmpeg-static@^4.2.7: - version "4.2.7" - resolved "https://registry.yarnpkg.com/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz#92ae531ca87748357adf1f05a218a7fadc51fd44" - integrity sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ== - dependencies: - "@derhuerst/http-basic" "^8.2.0" - env-paths "^2.2.0" - https-proxy-agent "^5.0.0" - progress "^2.0.3" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lodash@4, lodash@^4.17.14, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lowdb@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-1.0.0.tgz#5243be6b22786ccce30e50c9a33eac36b20c8064" - integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== - dependencies: - graceful-fs "^4.1.3" - is-promise "^2.1.0" - lodash "4" - pify "^3.0.0" - steno "^0.4.1" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -needle@^2.4.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a" - integrity sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -nodemon@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" - integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== - dependencies: - chokidar "^3.2.2" - debug "^3.2.6" - ignore-by-default "^1.0.1" - minimatch "^3.0.4" - pstree.remy "^1.1.7" - semver "^5.7.1" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.2" - update-notifier "^4.0.0" - -nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== - -prism-media@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.2.2.tgz#4f1c841f248b67d325a24b4e6b1a491b8f50a24f" - integrity sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0, progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -pstree.remy@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" - integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== - dependencies: - escape-goat "^2.0.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@^2.0.6, readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" - integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.0: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -steno@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" - integrity sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs= - dependencies: - graceful-fs "^4.1.3" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tar@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -undefsafe@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" - integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== - dependencies: - debug "^2.2.0" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -update-notifier@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== From 14a8fe1c0ac5ba5fdebe63e838400c782a994ec9 Mon Sep 17 00:00:00 2001 From: illusi0nary Date: Tue, 13 Oct 2020 10:01:35 +0200 Subject: [PATCH 21/40] Moving ar,tr,zh translations to new folder --- {lang => app/lang}/ar.js | 0 {lang => app/lang}/tr.js | 0 {lang => app/lang}/zh.js | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename {lang => app/lang}/ar.js (100%) rename {lang => app/lang}/tr.js (100%) rename {lang => app/lang}/zh.js (100%) diff --git a/lang/ar.js b/app/lang/ar.js similarity index 100% rename from lang/ar.js rename to app/lang/ar.js diff --git a/lang/tr.js b/app/lang/tr.js similarity index 100% rename from lang/tr.js rename to app/lang/tr.js diff --git a/lang/zh.js b/app/lang/zh.js similarity index 100% rename from lang/zh.js rename to app/lang/zh.js From 2952bb470edea1b4a7a48afacc24839c7910d972 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 21:21:48 +0200 Subject: [PATCH 22/40] Improve English translation file --- lang/en.js | 260 ++++------------------------------------------------- 1 file changed, 18 insertions(+), 242 deletions(-) diff --git a/lang/en.js b/lang/en.js index a56c416..5ec8c45 100644 --- a/lang/en.js +++ b/lang/en.js @@ -1,14 +1,4 @@ module.exports = { - comment: 'Additional information: \ -DISCLAIMER: The current version is just adding new emojis, words in English and a uniqueName field which is explained in the following text BUT later this file should be replaced with a template file that only contains the mapping of the emojis and uniqueName and for other languagese subfolders exist containing the mapping from unitqueName of the emoji to "words/expressions" that trigger the emoji.\ -1. The overall idea behind this file is to provide a common mapping for an emoji to an unique name which can be then mapped to certain words, e.g. for "Happy Halloween!" you would like to see the "Jack-O-Lantern" emoji, but when typing "I really carved an awesome Jack-O-Lantern!" this is also the case. To achieve this mapping between the unique uniqueName of the emoji to certain words ("Halloween", "Jack-O-Lantern", "Pumpkin", "halloween", "pumpkin") the language specific files are used.\ -So people who want to add a language do not have to search for all the emojis again and based on e.g. the English mapping can add their translation.\ -\ -Based on the emoji uniqueName it should also be possible to search for it on the internet to get more information, e.g. when an emoji might not be found you want to know why this does not work for you, and this is the reason for the following info.\ -\ -2. The list "emojiTemplateUniqueNameMappings" of emojis below (including their uniqueNames) was mostly taken from https://emojipedia.org/halloween/ and enhanced a bit with more emojis mentioned at the website, so using the uniqueName you should be able to find the emoji and background information on it (e.g. in which Unicode version was it introduced or what should the emoji mean).\ -\ -3. If you do not see some of the emojis this might be due to your used font as emojis are introduced in newer version of Unicode and not all fonts support the latest Unicode version.', lang: 'en', words: [ { @@ -27,12 +17,6 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Alien Monster', emoji: '๐Ÿ‘พ', }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['heart'], -// uniqueName: 'Anatomical Heart', -// emoji: '๐Ÿซ€', -// }, { name: ['angry devil'], uniqueName: 'Angry Face with Horns', @@ -43,41 +27,11 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Anxious Face with Sweat', emoji: '๐Ÿ˜ฐ', }, - { - name: ['axe'], - uniqueName: 'Axe', - emoji: '๐Ÿช“', - }, { name: ['bat'], uniqueName: 'Bat', emoji: '๐Ÿฆ‡', }, - { - name: ['beating heart'], - uniqueName: 'Beating Heart', - emoji: '๐Ÿ’“', - }, - { - name: ['black heart'], - uniqueName: 'Black Heart', - emoji: '๐Ÿ–ค', - }, - { - name: ['black cat'], - uniqueName: 'Black Cat', - emoji: '๐Ÿˆโ€โฌ›', - }, - { - name: ['blood'], - uniqueName: 'Blood', - emoji: '๐Ÿฉธ', - }, - { - name: ['drop of blood'], - uniqueName: 'Drop of Blood', - emoji: '๐Ÿฉธ', - }, { name: ['bone'], uniqueName: 'Bone', @@ -108,16 +62,6 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Chains', emoji: 'โ›“', }, - { - name: ['chocolate bar'], - uniqueName: 'Chocolate Bar', - emoji: '๐Ÿซ', - }, - { - name: ['cloud with lightning'], - uniqueName: 'Cloud with Lightning', - emoji: '๐ŸŒฉ', - }, { name: ['clown'], uniqueName: 'Clown Face', @@ -138,57 +82,16 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Dagger', emoji: '๐Ÿ—ก', }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['disguised'], -// uniqueName: 'Disguised Face', -// emoji: '๐Ÿฅธ', -// }, { name: ['abandoned house'], uniqueName: 'Derelict House', emoji: '๐Ÿš', }, - { - name: ['ear'], - uniqueName: 'Ear', - emoji: '๐Ÿ‘‚', - }, - { - name: ['eye'], - uniqueName: 'Eye', - emoji: '๐Ÿ‘๏ธ', - }, - { - name: ['eyes'], - uniqueName: 'Eyes', - emoji: '๐Ÿ‘€', - }, - { - name: ['investigate'], - uniqueName: 'Detective', - emoji: '๐Ÿ•ต', - }, - { - name: ['elf'], - uniqueName: 'Elf', - emoji: '๐Ÿง', - }, { name: ['scream'], uniqueName: 'Face Screaming in Fear', emoji: '๐Ÿ˜ฑ', }, - { - name: ['mummy'], - uniqueName: 'Face with Head-Bandage', - emoji: '๐Ÿค•', - }, - { - name: ['fairy'], - uniqueName: 'Fairy', - emoji: '๐Ÿงš', - }, { name: ['fear'], uniqueName: 'Fearful Face', @@ -199,26 +102,6 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Fire', emoji: '๐Ÿ”ฅ', }, - { - name: ['flying saucer'], - uniqueName: 'Flying Saucer', - emoji: '๐Ÿ›ธ', - }, - { - name: ['fog'], - uniqueName: 'Fog', - emoji: '๐ŸŒซ๏ธ', - }, - { - name: ['foot'], - uniqueName: 'Foot', - emoji: '๐Ÿฆถ', - }, - { - name: ['footprints'], - uniqueName: 'Footprints', - emoji: '๐Ÿ‘ฃ', - }, { name: ['full moon'], uniqueName: 'Full Moon', @@ -229,117 +112,26 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Funeral Urn', emoji: 'โšฑ', }, - { - name: ['genie'], - uniqueName: 'Genie', - emoji: '๐Ÿงž', - }, - { - name: ['goblin'], - uniqueName: 'Goblin', - emoji: '๐Ÿ‘บ', - }, { name: ['ghost'], uniqueName: 'Ghost', emoji: '๐Ÿ‘ป', }, { - name: ['greenheart'], - uniqueName: 'Green Heart', - emoji: '๐Ÿ’š', - }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['headstone'], -// uniqueName: 'Headstone', -// emoji: '๐Ÿชฆ', -// }, - { - name: ['high voltage'], - uniqueName: 'High Voltage', - emoji: 'โšก', - }, - { - name: ['halloween', 'pumpkin', 'all hallows eve'], + name: ['halloween', 'pumpkin', 'all hallows eve', 'Jack-O-Lantern'], uniqueName: 'Jack-O-Lantern', emoji: '๐ŸŽƒ', }, - { - name: ['leg'], - uniqueName: 'Leg', - emoji: '๐Ÿฆต', - }, { name: ['lollipop'], uniqueName: 'Lollipop', emoji: '๐Ÿญ', }, - { - name: ['witcher'], - uniqueName: 'Mage', - emoji: '๐Ÿง™', - }, - { - name: ['mermaid'], - uniqueName: 'Mermaid', - emoji: '๐Ÿงœโ€โ™€๏ธ', - }, - { - name: ['merman'], - uniqueName: 'Merman', - emoji: '๐Ÿงœโ€โ™‚๏ธ', - }, - { - name: ['merperson'], - uniqueName: 'Merperson', - emoji: '๐Ÿงœ', - }, - { - name: ['new moon face'], - uniqueName: 'New Moon Face', - emoji: '๐ŸŒš', - }, - { - name: ['night with stars'], - uniqueName: 'Night with Stars', - emoji: '๐ŸŒƒ', - }, - { - name: ['ogre'], - uniqueName: 'Ogre', - emoji: '๐Ÿ‘น', - }, - { - name: ['orangeheart'], - uniqueName: 'Orange Heart', - emoji: '๐Ÿงก', - }, { name: ['owl'], uniqueName: 'Owl', emoji: '๐Ÿฆ‰', }, - { - name: ['disguises'], - uniqueName: 'Performing Arts', - emoji: '๐ŸŽญ', - }, - { - name: ['person in suit levitating'], - uniqueName: 'Person In Suit Levitating', - emoji: '๐Ÿ•ด', - }, - { - name: ['princess'], - uniqueName: 'Princess', - emoji: '๐Ÿ‘ธ', - }, - { - name: ['robot'], - uniqueName: 'Robot', - emoji: '๐Ÿค–', - }, { name: ['skull'], uniqueName: 'Skull', @@ -351,7 +143,7 @@ Based on the emoji uniqueName it should also be possible to search for it on the emoji: 'โ˜ ', }, { - name: ['smiling devil'], + name: ['devil'], uniqueName: 'Smiling Face with Horns', emoji: '๐Ÿ˜ˆ', }, @@ -365,62 +157,46 @@ Based on the emoji uniqueName it should also be possible to search for it on the uniqueName: 'Spider Web', emoji: '๐Ÿ•ธ', }, - { - name: ['tongue'], - uniqueName: 'Tongue', - emoji: '๐Ÿ‘…', - }, - { - name: ['unicorn'], - uniqueName: 'Unicorn', - emoji: '๐Ÿฆ„', - }, - { - name: ['vampire'], - uniqueName: 'Vampire', - emoji: '๐Ÿง›', - }, { name: ['wilted flower'], uniqueName: 'Wilted Flower', emoji: '๐Ÿฅ€', }, { - name: ['female elf'], - uniqueName: 'Woman Elf', - emoji: '๐Ÿงโ€โ™€๏ธ', - }, - { - name: ['female genie'], - uniqueName: 'Woman Genie', - emoji: '๐Ÿงžโ€โ™€๏ธ', + name: ['witcher'], + uniqueName: 'Mage', + emoji: '๐Ÿง™', }, { name: ['witch'], uniqueName: 'Woman Mage', emoji: '๐Ÿง™โ€โ™€๏ธ', }, + { + name: ['vampire'], + uniqueName: 'Vampire', + emoji: '๐Ÿง›', + }, { name: ['female vampire'], uniqueName: 'Woman Vampire', emoji: '๐Ÿง›โ€โ™€๏ธ', }, + { + name: ['zombie'], + uniqueName: 'Zombie', + emoji: '๐ŸงŸ', + }, { name: ['female zombie'], uniqueName: 'Woman Zombie', emoji: '๐ŸงŸโ€โ™€๏ธ', }, - { - name: ['zombie'], - uniqueName: 'Zombie', - emoji: '๐ŸงŸ', - } ], mentions: [ { name: 'spooky', - emoji: '๐Ÿ‘ป' - } - ] + emoji: '๐Ÿ‘ป', + }, + ], } - From 6d3f0de4e966d0f0217e376a9d8ead49c96d6795 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 21:37:34 +0200 Subject: [PATCH 23/40] Update bot version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4dffa15..0558d65 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "spookybot", - "version": "1.0.0", + "version": "1.2.0", "description": "A spooky Discord bot", "main": "app/core.js", "repository": "git@github.com:LucasCtrl/spookyBot.git", From 252a4c74bdf9c10e50faaac2ef221be9153f2b6b Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 21:58:02 +0200 Subject: [PATCH 24/40] :ambulance: Fix broken link --- app/commands/Info/stats.js | 2 +- app/commands/Info/vote.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/commands/Info/stats.js b/app/commands/Info/stats.js index 44dd9ec..8715595 100644 --- a/app/commands/Info/stats.js +++ b/app/commands/Info/stats.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/app/commands/Info/vote.js b/app/commands/Info/vote.js index 18aefe6..b226160 100644 --- a/app/commands/Info/vote.js +++ b/app/commands/Info/vote.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { From 067072cabe821a3e0618d34c3c5a5fe7a0ba3457 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 22:03:12 +0200 Subject: [PATCH 25/40] :ambulance: Fix broken link --- app/utils/reactMessage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/reactMessage.js b/app/utils/reactMessage.js index cba537f..cabc2cc 100644 --- a/app/utils/reactMessage.js +++ b/app/utils/reactMessage.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../config.json') +const { colors } = require('../connfig/config.json') const { getGuild } = require('../models/servers') String.prototype.contains = function (toCheck) { From 884d1831da413b2e6d9896fced6f0623530c2edb Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 22:07:37 +0200 Subject: [PATCH 26/40] :ambulance: Fix broken link --- app/utils/reactMessage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/utils/reactMessage.js b/app/utils/reactMessage.js index cabc2cc..29b5aac 100644 --- a/app/utils/reactMessage.js +++ b/app/utils/reactMessage.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../connfig/config.json') +const { colors } = require('../config/config.json') const { getGuild } = require('../models/servers') String.prototype.contains = function (toCheck) { From f15938d295d02e240e54512de61de9c0e12d9cb4 Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Tue, 13 Oct 2020 22:57:55 +0200 Subject: [PATCH 27/40] :ambulance: Fix the tricks or treats thing --- app/commands/Text/trickortreat.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/commands/Text/trickortreat.js b/app/commands/Text/trickortreat.js index 0eb6654..d24bb11 100644 --- a/app/commands/Text/trickortreat.js +++ b/app/commands/Text/trickortreat.js @@ -41,7 +41,7 @@ module.exports = { .setColor(colors.info) .setDescription('Better luck tomorrow!') .addField(':candy: Candys', trickOrTreat.treats, true) - .addField(':smiling_imp: Treats', trickOrTreat.tricks, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) .setTimestamp(new Date()) @@ -54,7 +54,7 @@ module.exports = { .setColor(colors.error) .setDescription('There will be more candy up for grabs tomorrow!') .addField(':candy: Candys', trickOrTreat.treats, true) - .addField(':smiling_imp: Treats', trickOrTreat.tricks, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) .setTimestamp(new Date()) @@ -65,8 +65,8 @@ module.exports = { .setTitle('It looks like you have already played today.') .setColor(colors.primary) .setDescription('There will be more candy up for grabs tomorrow!') - .addField(':candy: Candys', trickOrTreat.tricks, true) - .addField(':smiling_imp: Treats', trickOrTreat.treats, true) + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) .setTimestamp(new Date()) From 6ae6d6e7edd54c3ec49a7cc5812130188173a281 Mon Sep 17 00:00:00 2001 From: LucasAlt Date: Thu, 15 Oct 2020 09:50:43 +0200 Subject: [PATCH 28/40] Update fr.js --- app/lang/fr.js | 166 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 153 insertions(+), 13 deletions(-) diff --git a/app/lang/fr.js b/app/lang/fr.js index 83e5d4b..12e1c33 100644 --- a/app/lang/fr.js +++ b/app/lang/fr.js @@ -1,42 +1,182 @@ module.exports = { - lang: 'es', + lang: 'fr', words: [ { // Please do not delete this one ๐Ÿ™ - name: 'spooky', + name: ['spooky'], + uniqueName: '_custom_spooky', emoji: '761602615326146590', }, { - name: ['bonbon'], + name: ['alien', 'extraterrestre'], + uniqueName: 'Alien', + emoji: '๐Ÿ‘ฝ', + }, + { + name: ['monstre'], + uniqueName: 'Alien Monster', + emoji: '๐Ÿ‘พ', + }, + { + name: ['anxieux'], + uniqueName: 'Anxious Face with Sweat', + emoji: '๐Ÿ˜ฐ', + }, + { + name: ['chauve-souris', 'chauve souris'], + uniqueName: 'Bat', + emoji: '๐Ÿฆ‡', + }, + { + name: ['os'], + uniqueName: 'Bone', + emoji: '๐Ÿฆด', + }, + { + name: ['cerveau', 'brain'], + uniqueName: 'Brain', + emoji: '๐Ÿง ', + }, + { + name: ['balais'], + uniqueName: 'Broom', + emoji: '๐Ÿงน', + }, + { + name: ['cierge', 'bougie'], + uniqueName: 'Candle', + emoji: '๐Ÿ•ฏ', + }, + { + name: ['bonbon', 'friandise'], + uniqueName: 'Candy', emoji: '๐Ÿฌ', }, + { + name: ['chaines'], + uniqueName: 'Chains', + emoji: 'โ›“', + }, + { + name: ['clown'], + uniqueName: 'Clown Face', + emoji: '๐Ÿคก', + }, + { + name: ['cerveuil'], + uniqueName: 'Coffin', + emoji: 'โšฐ', + }, + { + name: ['boule de crystal'], + uniqueName: 'Crystal Ball', + emoji: '๐Ÿ”ฎ', + }, + { + name: ['dague', 'couteau'], + uniqueName: 'Dagger', + emoji: '๐Ÿ—ก', + }, + { + name: ['maison abandonnรฉe'], + uniqueName: 'Derelict House', + emoji: '๐Ÿš', + }, + { + name: ['cri'], + uniqueName: 'Face Screaming in Fear', + emoji: '๐Ÿ˜ฑ', + }, + { + name: ['peur'], + uniqueName: 'Fearful Face', + emoji: '๐Ÿ˜จ', + }, + { + name: ['feu', 'fire'], + uniqueName: 'Fire', + emoji: '๐Ÿ”ฅ', + }, + { + name: ['pleine lune'], + uniqueName: 'Full Moon', + emoji: '๐ŸŒ•', + }, + { + name: ['Urne'], + uniqueName: 'Funeral Urn', + emoji: 'โšฑ', + }, { name: ['fantรดme', 'fantome'], + uniqueName: 'Ghost', emoji: '๐Ÿ‘ป', }, { - name: ['halloween'], + name: ['halloween', 'citrouille', 'jack-o-lantern'], + uniqueName: 'Jack-O-Lantern', emoji: '๐ŸŽƒ', }, { - name: ['vampire'], - emoji: '๐Ÿง›', + name: ['sucette'], + uniqueName: 'Lollipop', + emoji: '๐Ÿญ', }, { - name: ['mage', 'magicien'], - emoji: '๐Ÿง™', + name: ['hibou'], + uniqueName: 'Owl', + emoji: '๐Ÿฆ‰', }, { - name: ['zombie', 'mort vivant'], - emoji: '๐ŸงŸ', + name: ['crรขne', 'crane'], + uniqueName: 'Skull', + emoji: '๐Ÿ’€', }, { - name: ['mort', 'squelette', 'crane', 'crรขne'], - emoji: '๐Ÿ’€', + name: ['diable', 'satan'], + uniqueName: 'Smiling Face with Horns', + emoji: '๐Ÿ˜ˆ', + }, + { + name: ['araignรฉe', 'araignee'], + uniqueName: 'Spider', + emoji: '๐Ÿ•ท', }, { - name: ['toile', "toile d'araignรฉe"], + name: ['toile'], + uniqueName: 'Spider Web', emoji: '๐Ÿ•ธ', }, + { + name: ['fleur fanรฉ', 'fleur fanรฉ'], + uniqueName: 'Wilted Flower', + emoji: '๐Ÿฅ€', + }, + { + name: ['sorcier'], + uniqueName: 'Mage', + emoji: '๐Ÿง™', + }, + { + name: ['sorciรจre', 'sorciere'], + uniqueName: 'Woman Mage', + emoji: '๐Ÿง™โ€โ™€๏ธ', + }, + { + name: ['vampire'], + uniqueName: 'Vampire', + emoji: '๐Ÿง›', + }, + { + name: ['zombie', 'mort vivant'], + uniqueName: 'Zombie', + emoji: '๐ŸงŸ', + }, + ], + mentions: [ + { + name: 'spook', + emoji: '๐Ÿ‘ป', + }, ], } From f31abc58dc0f9d2f288c4bf6a061ddb9ea6d4baa Mon Sep 17 00:00:00 2001 From: LucasAlt Date: Thu, 15 Oct 2020 10:00:26 +0200 Subject: [PATCH 29/40] Update fr.js --- app/lang/fr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lang/fr.js b/app/lang/fr.js index 12e1c33..bbf8522 100644 --- a/app/lang/fr.js +++ b/app/lang/fr.js @@ -63,7 +63,7 @@ module.exports = { emoji: '๐Ÿคก', }, { - name: ['cerveuil'], + name: ['cerceuil'], uniqueName: 'Coffin', emoji: 'โšฐ', }, From 25a7b4256f4f74cf278282790ba7acfca834b5e7 Mon Sep 17 00:00:00 2001 From: LucasAlt Date: Thu, 15 Oct 2020 11:28:59 +0200 Subject: [PATCH 30/40] Update fr.js --- app/lang/fr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lang/fr.js b/app/lang/fr.js index bbf8522..faa0115 100644 --- a/app/lang/fr.js +++ b/app/lang/fr.js @@ -103,7 +103,7 @@ module.exports = { emoji: '๐ŸŒ•', }, { - name: ['Urne'], + name: ['urne'], uniqueName: 'Funeral Urn', emoji: 'โšฑ', }, From 5cd731cd88502be9083e270c80c15082e6b06bae Mon Sep 17 00:00:00 2001 From: LucasCtrl Date: Thu, 15 Oct 2020 20:08:35 +0200 Subject: [PATCH 31/40] :ambulance: Fix the word detection --- app/lang/en.js | 2 +- app/utils/reactMessage.js | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/lang/en.js b/app/lang/en.js index 5ec8c45..048cc6a 100644 --- a/app/lang/en.js +++ b/app/lang/en.js @@ -73,7 +73,7 @@ module.exports = { emoji: 'โšฐ', }, { - name: ['crystral ball'], + name: ['crystal ball'], uniqueName: 'Crystal Ball', emoji: '๐Ÿ”ฎ', }, diff --git a/app/utils/reactMessage.js b/app/utils/reactMessage.js index 29b5aac..4af2ad7 100644 --- a/app/utils/reactMessage.js +++ b/app/utils/reactMessage.js @@ -8,7 +8,12 @@ String.prototype.contains = function (toCheck) { const translationNameContainsWord = (translationName, fullMessage) => { if (translationName instanceof Array) { - return translationName.map((n) => fullMessage.contains(n)).reduce((a, b) => a || b) + return translationName + .map((n) => { + let regex = new RegExp('\\b' + n + '\\b', 'g') + return regex.test(fullMessage) + }) + .reduce((a, b) => a || b) } else { return fullMessage.contains(translationName) } @@ -29,27 +34,28 @@ module.exports = async (guildId, message, webhook) => { const fullMessage = message.content.toLowerCase() let triggeredEmoji = [] + let triggeredWord = [] translation.words.forEach((w) => { if (translationNameContainsWord(w.name, fullMessage)) { message.react(w.emoji) triggeredEmoji.push(w.emoji) + triggeredWord.push(w.name) } }) translation.mentions.forEach((m) => { if (translationNameContainsUser(m.name, message.mentions)) { message.react(m.emoji) triggeredEmoji.push(m.emoji) + triggeredWord.push(w.name) } }) - console.log(triggeredEmoji) - if (triggeredEmoji.length != 0) { const privateEmbed = new MessageEmbed() .setColor(colors.primary) .setTitle(`Reaction trigger`) - .setDescription(`${message.content}\nReacted with:\n${triggeredEmoji.join('\n')}`) + .setDescription(`**Message:**\n${message.content}\n\n**Reacted with:**\n${triggeredEmoji.join(' ')}`) .setFooter(`${message.author.tag} | #${message.channel.name} | ${message.guild.name}`, message.guild.iconURL()) webhook.send(privateEmbed) From b4fe7d8a870e62a35564e198ab28cb16d51fa563 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:11:52 +0200 Subject: [PATCH 32/40] modules: add axios --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0558d65..7edc1fb 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "private": true, "dependencies": { "@discordjs/opus": "^0.3.2", + "axios": "^0.20.0", "discord.js": "^12.3.1", "ffmpeg-static": "^4.2.7", "lowdb": "^1.0.0" From 7199249774063016df1ba1d75ac069e9be744b08 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:13:16 +0200 Subject: [PATCH 33/40] feat(meme command): add meme command Add a command which displays a random image from r/spooktober --- commands/Picture/meme.js | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 commands/Picture/meme.js diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js new file mode 100644 index 0000000..92a4b5f --- /dev/null +++ b/commands/Picture/meme.js @@ -0,0 +1,41 @@ +const axios = require('axios').default +const { prefix } = require('../../config.json') + +const SUBREDDIT_JSON_URL = 'https://reddit.com/r/spooktober/.json?count=30' // URL of the json containing last subreddit posts +const POST_HINT_IMG = 'image' // image post hint + +module.exports = { + config: { + name: 'Spooky meme', + usage: `${prefix}meme`, + description: 'Posts a spooky meme as a picture. The image is fetched from reddit.com/r/spooktober', + command: 'meme', + displayHelp: true, + }, + + run: async (bot, message, args) => { + const res = await axios.get(SUBREDDIT_JSON_URL) + if (res.status != 200 || !res.data) { + message.reply('Something failed.') + return + } + + const resData = res.data.data + if (!resData) { + message.reply('Nothing spooky has been found') + return + } + + // filter keeping image posts (as we can't do it via the API) + const posts = resData.children.map((x) => x.data).filter((x) => x.post_hint === POST_HINT_IMG) + if (!posts) { + message.reply('No spooky image has been found') + return + } + + // selecting a random post + const randomIdx = Math.floor(Math.random() * posts.length) + const imageUrl = posts[randomIdx].url + message.channel.send(imageUrl) + }, +} From edf9ea077bc10019e34cfdc1c2bf14ae003cd524 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Mon, 5 Oct 2020 19:14:13 +0200 Subject: [PATCH 34/40] feat(meme command): update command handler to use Picture directory --- app/handlers/command.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/handlers/command.js b/app/handlers/command.js index f93e37f..1f7cfd9 100644 --- a/app/handlers/command.js +++ b/app/handlers/command.js @@ -11,7 +11,8 @@ module.exports = (bot) => { } } - const dirs = ['Info', 'Configuration', 'Sound', 'Text'] + + const dirs = ['Info', 'Configuration', 'Sound', 'Picture', 'Text']] if (process.env.NODE_ENV === 'dev') dirs.push('Test') From 898e426448fbdec35f8b2d4fad6e48fcb8fc5466 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:23:32 +0200 Subject: [PATCH 35/40] modules: replace axios by snoowrap for reddit calls --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7edc1fb..e127a61 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ "private": true, "dependencies": { "@discordjs/opus": "^0.3.2", - "axios": "^0.20.0", "discord.js": "^12.3.1", "ffmpeg-static": "^4.2.7", - "lowdb": "^1.0.0" + "lowdb": "^1.0.0", + "snoowrap": "^1.21.0" }, "devDependencies": { "eslint": "^7.10.0", From 2e9cf6d543e558179393ea770c714d0a759048bd Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:00 +0200 Subject: [PATCH 36/40] feat(meme command): add reddit helper --- utils/redditHelper.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 utils/redditHelper.js diff --git a/utils/redditHelper.js b/utils/redditHelper.js new file mode 100644 index 0000000..1a2f145 --- /dev/null +++ b/utils/redditHelper.js @@ -0,0 +1,10 @@ +module.exports = { + configIsValid: (redditConf) => { + return ( + redditConf && redditConf.userAgent && redditConf.clientId && redditConf.clientSecret && redditConf.refreshToken + ) + }, + isPicture: (submission) => { + return submission.url && submission.url.includes('https://i.redd.it') + }, +} From 2e4104364dd3f5155aab055efea3c03812fb6be2 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:38 +0200 Subject: [PATCH 37/40] refactor(meme command): use reddit API to get random image --- commands/Picture/meme.js | 42 +++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js index 92a4b5f..acab93d 100644 --- a/commands/Picture/meme.js +++ b/commands/Picture/meme.js @@ -1,8 +1,9 @@ -const axios = require('axios').default -const { prefix } = require('../../config.json') +const snoowrap = require('snoowrap') +const redditHelper = require('../../utils/redditHelper.js') +const { prefix, reddit } = require('../../config.json') +const { isPicture } = require('../../utils/redditHelper.js') -const SUBREDDIT_JSON_URL = 'https://reddit.com/r/spooktober/.json?count=30' // URL of the json containing last subreddit posts -const POST_HINT_IMG = 'image' // image post hint +const SUBREDDIT_NAME = 'spooktober' module.exports = { config: { @@ -14,28 +15,25 @@ module.exports = { }, run: async (bot, message, args) => { - const res = await axios.get(SUBREDDIT_JSON_URL) - if (res.status != 200 || !res.data) { - message.reply('Something failed.') + if (!redditHelper.configIsValid(reddit)) { + message.reply(':ghost: No reddit config found. Please check the README.md to provide one.') return } - const resData = res.data.data - if (!resData) { - message.reply('Nothing spooky has been found') - return - } + const retriever = new snoowrap({ + userAgent: reddit.userAgent, + clientId: reddit.clientId, + clientSecret: reddit.clientSecret, + refreshToken: reddit.refreshToken, + }) - // filter keeping image posts (as we can't do it via the API) - const posts = resData.children.map((x) => x.data).filter((x) => x.post_hint === POST_HINT_IMG) - if (!posts) { - message.reply('No spooky image has been found') - return - } + const submissions = await retriever.getSubreddit(SUBREDDIT_NAME).getHot() + const imageSubmissions = submissions.filter((x) => !x.over_18 && !x.spoiler && redditHelper.isPicture(x)) + const randomIdx = Math.floor(Math.random() * imageSubmissions.length) + const randSubmission = imageSubmissions[randomIdx] - // selecting a random post - const randomIdx = Math.floor(Math.random() * posts.length) - const imageUrl = posts[randomIdx].url - message.channel.send(imageUrl) + console.log(imageSubmissions) + if (randSubmission) message.channel.send(randSubmission.url) + else message.channel.send(':ghost: No spooky meme found') }, } From a64aec51aae923c6c86c004ea2332c0c62afecc4 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:24:58 +0200 Subject: [PATCH 38/40] config: update config example to match reddit arguments --- app/config/config.example.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/config/config.example.json b/app/config/config.example.json index d467aa8..8cc9474 100644 --- a/app/config/config.example.json +++ b/app/config/config.example.json @@ -10,5 +10,12 @@ "success": "#2ECC71", "error": "#E74C3C", "info": "#7C5398" + }, + "reddit": { + "userAgent": "SpookyBot, a Discord bot to celebrate Halloween", + "clientId": "", + "clientSecret": "", + "refreshToken": "" } -} \ No newline at end of file +} + From 556babaca304d86abbc01932ab758682b7477ff9 Mon Sep 17 00:00:00 2001 From: Matteo A Date: Tue, 6 Oct 2020 19:55:38 +0200 Subject: [PATCH 39/40] fix(meme command): remove console.log --- commands/Picture/meme.js | 1 - 1 file changed, 1 deletion(-) diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js index acab93d..98f905f 100644 --- a/commands/Picture/meme.js +++ b/commands/Picture/meme.js @@ -32,7 +32,6 @@ module.exports = { const randomIdx = Math.floor(Math.random() * imageSubmissions.length) const randSubmission = imageSubmissions[randomIdx] - console.log(imageSubmissions) if (randSubmission) message.channel.send(randSubmission.url) else message.channel.send(':ghost: No spooky meme found') }, From e3aacef4772c1c56db112365747d738a8c448eb4 Mon Sep 17 00:00:00 2001 From: Matteo AUGER Date: Mon, 19 Oct 2020 19:19:39 +0200 Subject: [PATCH 40/40] fix(command.js): dirs syntax error --- app/handlers/command.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/handlers/command.js b/app/handlers/command.js index 1f7cfd9..3588066 100644 --- a/app/handlers/command.js +++ b/app/handlers/command.js @@ -12,7 +12,7 @@ module.exports = (bot) => { } - const dirs = ['Info', 'Configuration', 'Sound', 'Picture', 'Text']] + const dirs = ['Info', 'Configuration', 'Sound', 'Picture', 'Text']; if (process.env.NODE_ENV === 'dev') dirs.push('Test')