diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 198415d..5cab9ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ permissions: contents: write jobs: create-release: - if: github.event.pull_request.merged == true + if: github.event_name == 'pull_request' && github.event.pull_request.merged == true runs-on: ubuntu-latest outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} diff --git a/package-lock.json b/package-lock.json index 83619f6..11c7393 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "discord-features-handler", - "version": "3.2.0", + "version": "3.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "discord-features-handler", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "dependencies": { "discord.js": "^14.21.0" diff --git a/package.json b/package.json index 7c35008..e48ce1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "discord-features-handler", - "version": "3.2.0", + "version": "3.2.1", "description": "An simple discord regular and slash commands, events and modules handler with folder structure", "main": "src/index.js", "types": "src/index.d.ts", diff --git a/src/index.js b/src/index.js index 8f0f5f1..543f675 100644 --- a/src/index.js +++ b/src/index.js @@ -262,12 +262,37 @@ const DiscordFeaturesHandler = async ( client.levelCache[thisLevel.name.toString()] = thisLevel.level; } - client.login(client.config.token).catch((e) => { - console.warn(e); - throw new Error( - `Please check if your discord bot token is valid! The token should be defined in config.token` - ); - }); + const loginWithRetry = async (client, maxRetries = 3) => { + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + await client.login(client.config.token); + return; + } catch (error) { + console.warn(`Login attempt ${attempt} failed:`, error.message); + + if (error.code === "TOKEN_INVALID" || error.message.includes("401")) { + throw new Error( + "Invalid token provided. Please check your discord bot token in config.token" + ); + } + + if (attempt === maxRetries) { + throw new Error( + `Failed to login after ${maxRetries} attempts. Last error: ${error.message}` + ); + } + + const baseDelay = 1000; + const jitter = Math.random() * 500; + const delay = baseDelay * Math.pow(2, attempt - 1) + jitter; + + console.log(`Retrying in ${Math.round(delay)}ms...`); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + }; + + await loginWithRetry(client); await client.wait(modulesPreloadTime); loadModules({