diff --git a/README.md b/README.md index 53c97ca..67be7a5 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Under development, however mainly for personal use! 6. Run `npm run start` to start the built script ## Notes ## -- If you end the script without closing the browser window first (only with headless as false), you'll be left with hanging chrome instances using resources. Use taskmanager to kill these or use the included `npm run chrome-kill-win` script. WINDOWS ONLY +- If you end the script without closing the browser window first (only with headless as false), you'll be left with hanging chrome instances using resources. Use taskmanager to kill these or use the included `npm run chrome-kill-win` script. (Windows) - If you automate this script, set it to run at least 2 times a day to make sure it picked up all tasks, set `"runOnZeroPoints": false` so it doesn't run when no points are found. diff --git a/package.json b/package.json index 10ed89a..e00223e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "microsoft-rewards-script", - "version": "1.3.0", + "version": "1.3.1", "description": "Automatically do tasks for Microsoft Rewards but in TS!", "main": "index.js", "engines": { @@ -28,14 +28,14 @@ "@typescript-eslint/eslint-plugin": "^6.7.0", "eslint": "^8.54.0", "eslint-plugin-modules-newline": "^0.0.6", - "typescript": "^5.2.2" + "typescript": "^5.3.3" }, "dependencies": { "axios": "^1.6.2", "cheerio": "^1.0.0-rc.12", "fingerprint-generator": "^2.1.45", "fingerprint-injector": "^2.1.45", - "puppeteer": "^21.5.2", - "ts-node": "^10.9.1" + "puppeteer": "^21.6.1", + "ts-node": "^10.9.2" } } diff --git a/src/functions/activities/Poll.ts b/src/functions/activities/Poll.ts index 7c462a6..0450458 100644 --- a/src/functions/activities/Poll.ts +++ b/src/functions/activities/Poll.ts @@ -11,7 +11,7 @@ export class Poll extends Workers { try { const buttonId = `#btoption${Math.floor(this.bot.utils.randomNumber(0, 1))}` - await page.waitForSelector(buttonId, { visible: true, timeout: 10_000 }) + await page.waitForSelector(buttonId, { visible: true, timeout: 10_000 }).catch(() => { }) // We're gonna click regardless or not await this.bot.utils.wait(2000) await page.click(buttonId) diff --git a/src/functions/activities/Search.ts b/src/functions/activities/Search.ts index 2bd21cd..c700855 100644 --- a/src/functions/activities/Search.ts +++ b/src/functions/activities/Search.ts @@ -154,6 +154,22 @@ export class Search extends Workers { this.bot.log('SEARCH-BING', 'Search failed, An error occurred:' + error, 'error') this.bot.log('SEARCH-BING', `Retrying search, attempt ${i}/5`, 'warn') + // Reset the tabs + const browser = searchPage.browser() + const tabs = await browser.pages() + const lastTab = await this.bot.browser.utils.getLatestTab(searchPage) + + if (tabs.length === 4) { + await lastTab.close() + + } else if (tabs.length === 2) { + const newPage = await browser.newPage() + await newPage.goto(this.searchPageURL) + + } else { + await lastTab.goBack() + } + await this.bot.utils.wait(4000) } }