diff --git a/docs/reference/application.md b/docs/reference/application.md index fe32307..99b2f31 100644 --- a/docs/reference/application.md +++ b/docs/reference/application.md @@ -18,6 +18,7 @@ | `PROXY_PROTOCOL` | Protocol of proxy server, such as `socks5`. Default: `http` | | `PROXY_ADDRESS` | IP Address or fqdn of proxy server | | `PROXY_PORT` | TCP Port number on which the proxy is listening for connections. Default: `80` | +| `RESTART_TIME` | Restarts chrome after defined milliseconds. `0` for never, default: `0` | | `SCREENSHOT` | Capture screenshot of page if a card is found. Default: `true` | | `WEB_PORT` | Starts a webserver to be able to control the bot while it is running. Setting this value starts this service. | diff --git a/dotenv-example b/dotenv-example index 0d63bce..0c60ade 100644 --- a/dotenv-example +++ b/dotenv-example @@ -88,6 +88,7 @@ PUSHOVER_RETRY= PUSHOVER_TOKEN= PUSHOVER_USER= PUSHOVER_PRIORITY= +RESTART_TIME= SCREENSHOT= SHOW_ONLY_BRANDS= SHOW_ONLY_MODELS= diff --git a/src/config.ts b/src/config.ts index 3789adf..a721f0d 100644 --- a/src/config.ts +++ b/src/config.ts @@ -439,6 +439,8 @@ const store = { }), }; +const restartTime = envOrNumber(process.env.RESTART_TIME, 0); + export const defaultStoreData = { maxPageSleep: browser.maxSleep, minPageSleep: browser.minSleep, @@ -453,6 +455,7 @@ export const config = { page, proxy, store, + restartTime, }; export function setConfig(newConfig: any) { diff --git a/src/index.ts b/src/index.ts index 9ea71cc..7a5b9ef 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,6 +13,21 @@ puppeteer.use(stealthPlugin()); let browser: Browser | undefined; +async function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +/** + * Schedules a restart of the bot + */ +async function restartMain() { + if (config.restartTime > 0) { + await sleep(config.restartTime); + await stop(); + loopMain(); + } +} + /** * Starts the bot. */ @@ -92,6 +107,7 @@ async function stopAndExit() { */ async function loopMain() { try { + restartMain(); await main(); } catch (error: unknown) { logger.error(