From 5cf0c80f83b93e9455387e161023f76bd0af0735 Mon Sep 17 00:00:00 2001 From: William McKinnerney Date: Fri, 12 May 2023 18:23:22 -0500 Subject: [PATCH] limit concurrency of role assign to 10 calls --- assign_roles.js | 8 ++++++-- package-lock.json | 43 +++++++++++++++++++++++++++++++++++++++++-- package.json | 3 ++- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/assign_roles.js b/assign_roles.js index 528a82a..1fb248e 100644 --- a/assign_roles.js +++ b/assign_roles.js @@ -1,3 +1,7 @@ +const pLimit = require('p-limit'); + +const limit = pLimit(10); + async function assignRoles(member) { const MANAGED_ROLES = ["Supervisor", "Administrator", "New Member", "PPL", "IR", "CMEL", "ATPL", "Flight Instructor", "Flight Examiner", "No Military Rating", "M1", "M2","M3","M4"]; const discordCidResponse = await fetch(`https://apiv2-dev.vatsim.net/v2/members/discord/${member.user.id}`).catch(error => console.trace(error)); @@ -73,5 +77,5 @@ async function assignRoles(member) { } module.exports = { - assignRoles: assignRoles -} \ No newline at end of file + assignRoles: (member) => limit(() => assignRoles(member)) +} diff --git a/package-lock.json b/package-lock.json index 1b9d4c1..9777a8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "discordbot-1", + "name": "ptd-discord-bot", "lockfileVersion": 2, "requires": true, "packages": { @@ -7,7 +7,8 @@ "dependencies": { "discord.js": "^14.6.0", "dotenv": "^16.0.3", - "nodemon": "^2.0.20" + "nodemon": "^2.0.20", + "p-limit": "^3.1.0" } }, "node_modules/@discordjs/builders": { @@ -450,6 +451,20 @@ "node": ">=0.10.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -694,6 +709,17 @@ "optional": true } } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -1014,6 +1040,14 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, "peek-readable": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", @@ -1168,6 +1202,11 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "requires": {} + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 4b18672..90a47a2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "dependencies": { "discord.js": "^14.6.0", "dotenv": "^16.0.3", - "nodemon": "^2.0.20" + "nodemon": "^2.0.20", + "p-limit": "^3.1.0" }, "scripts": { "start": "node bot.js",