From 86f2adb540f536b912e53dd288a3bbcca0742fd2 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Mon, 23 Oct 2023 19:22:17 -0600 Subject: [PATCH] add swapfile and epic web dev support emoji --- app/bot/reactions/reactions.ts | 12 ++ package-lock.json | 259 ++++++++++++++++++++++++---- package.json | 1 + scripts/bot-emoji/botewdsupport.png | Bin 0 -> 5637 bytes scripts/setup-swap.js | 13 ++ start.sh | 1 + 6 files changed, 251 insertions(+), 35 deletions(-) create mode 100644 scripts/bot-emoji/botewdsupport.png create mode 100644 scripts/setup-swap.js diff --git a/app/bot/reactions/reactions.ts b/app/bot/reactions/reactions.ts index 2023b61..1ae9b9a 100644 --- a/app/bot/reactions/reactions.ts +++ b/app/bot/reactions/reactions.ts @@ -23,6 +23,7 @@ const reactions: Record = { botcall: callKent, bottjssupport: tjssupport, boterdsupport: erdsupport, + botewdsupport: ewdsupport, } as const async function help(messageReaction: Discord.MessageReaction) { @@ -241,4 +242,15 @@ async function erdsupport(messageReaction: Discord.MessageReaction) { } erdsupport.description = `Replies to the message telling the user to email EpicReact.dev support.` +async function ewdsupport(messageReaction: Discord.MessageReaction) { + void messageReaction.remove() + const { channel, author, guild } = messageReaction.message + if (!guild || !channel || !author) return + + await messageReaction.message.reply( + `For support with EpicWeb.dev, please email team@epicweb.dev. Thanks!`, + ) +} +ewdsupport.description = `Replies to the message telling the user to email EpicWeb.dev support.` + export default reactions diff --git a/package-lock.json b/package-lock.json index bdb96f5..19711a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "discord-api-types": "^0.37.11", "discord.js": "^14.5.0", "dotenv": "^16.0.2", + "execa": "^8.0.1", "got": "^12.5.1", "htmlparser2": "^8.0.1", "isbot": "^3.5.4", @@ -3334,6 +3335,29 @@ "@esbuild/win32-x64": "0.17.6" } }, + "node_modules/@remix-run/dev/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/@remix-run/dev/node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -3350,6 +3374,48 @@ "node": ">=8.6.0" } }, + "node_modules/@remix-run/dev/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@remix-run/dev/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@remix-run/dev/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@remix-run/dev/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/@remix-run/eslint-config": { "version": "1.19.3", "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-1.19.3.tgz", @@ -8603,28 +8669,74 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/exit-hook": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz", @@ -9755,12 +9867,11 @@ } }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { - "node": ">=10.17.0" + "node": ">=16.17.0" } }, "node_modules/iconv-lite": { @@ -10328,12 +10439,11 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11349,8 +11459,7 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -12820,15 +12929,28 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/oauth-1.0a": { @@ -15172,6 +15294,71 @@ "node": ">=6" } }, + "node_modules/start-server-and-test/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/start-server-and-test/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/start-server-and-test/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/start-server-and-test/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/start-server-and-test/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -15397,12 +15584,14 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-indent": { diff --git a/package.json b/package.json index 5f106d9..44a7c8c 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "discord-api-types": "^0.37.11", "discord.js": "^14.5.0", "dotenv": "^16.0.2", + "execa": "^8.0.1", "got": "^12.5.1", "htmlparser2": "^8.0.1", "isbot": "^3.5.4", diff --git a/scripts/bot-emoji/botewdsupport.png b/scripts/bot-emoji/botewdsupport.png new file mode 100644 index 0000000000000000000000000000000000000000..6841dbd8bfd577438d7f4573c64eed4796d3e430 GIT binary patch literal 5637 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