- Deleted the scheduler module and its associated functions, transitioning to OS-level scheduling. - Removed the Analytics module and its related interfaces, retaining only a placeholder for backward compatibility. - Updated ConfigValidator to warn about legacy schedule and analytics configurations. - Cleaned up StartupValidator to remove diagnostics and schedule validation logic. - Adjusted Load.ts to handle legacy flags for diagnostics and analytics. - Removed unused diagnostics capturing functionality.
6.5 KiB
External Scheduling
The built-in scheduler has been removed. Use your operating system or orchestrator to trigger runs with full control over timing, retries, and monitoring.
Windows Task Scheduler
- Open Task Scheduler, choose Create Basic Task..., and name it
Microsoft Rewards Bot. - Pick a trigger (daily, weekly, at startup, etc.).
- Choose Start a Program and configure:
- Program/script:
powershell.exe - Arguments:
-NoProfile -ExecutionPolicy Bypass -Command "cd 'C:\Users\YourUser\Microsoft-Rewards-Script'; npm run start" - Start in (optional):
C:\Users\YourUser\Microsoft-Rewards-Script
- Program/script:
- Finish the wizard, edit the task → General tab, and enable Run whether user is logged on or not. Grant highest privileges if required.
- Test with Run. Append
| Tee-Object -FilePath C:\Logs\rewards.logto capture output in a file.
Tip: prefer a batch file? Create
run-rewards.batwithcd /d C:\Users\YourUser\Microsoft-Rewards-Scriptandnpm run start, then point Task Scheduler to that file.
Linux / macOS (cron)
- Run
npm run startonce to confirm the project completes successfully. - Edit the crontab:
crontab -e. - Add an entry (example: 09:15 daily):
15 9 * * * cd /home/you/Microsoft-Rewards-Script && /usr/bin/env npm run start >> /home/you/rewards.log 2>&1 - Save the file and verify the log after the next trigger.
Need multiple runs? Add more cron lines with different times (for example 0 9 * * * and 30 18 * * *).
Systemd Timer (Linux alternative)
- Create
/etc/systemd/system/rewards-bot.service:[Unit] Description=Microsoft Rewards Bot WorkingDirectory=/home/you/Microsoft-Rewards-Script [Service] Type=oneshot Environment=NODE_ENV=production ExecStart=/usr/bin/env npm run start - Create
/etc/systemd/system/rewards-bot.timer:[Unit] Description=Run Microsoft Rewards Bot daily [Timer] OnCalendar=*-*-* 09:00:00 Persistent=true [Install] WantedBy=timers.target - Reload and enable:
sudo systemctl daemon-reload sudo systemctl enable --now rewards-bot.timer - Inspect status via
systemctl status rewards-bot.timerand recent runs withjournalctl -u rewards-bot.service.
Docker & Containers
- The container now runs a single pass. Restart it on your schedule (cron, Kubernetes CronJob, Task Scheduler, etc.).
- To schedule inside the container, set:
The entrypoint installs cron, runs according to
USE_CRON: "true" CRON_SCHEDULE: "0 9 * * *" RUN_ON_START: "true"CRON_SCHEDULE, and tails/var/log/cron.log. - Mount
accounts.jsonc,config.jsonc, andsessions/so each run shares state.
Troubleshooting
- Run
npm installandnpm run buildafter pulling updates. - Use absolute paths in scheduler commands.
- Redirect output to a log file for easier debugging.
- Execute
npm run startmanually after configuration changes to trigger the startup validator.
Next steps: Configuration · Docker · Humanization# ? External Scheduling
The built-in scheduler has been removed. Use your operating system or orchestrator to trigger runs with full control over timing, retries, and monitoring.
Windows Task Scheduler
- Open Task Scheduler ? Create Basic Task<73> and name it Microsoft Rewards Bot.
- Choose a trigger (daily, weekly, or at startup).
- Select Start a Program and configure:
- Program/script: powershell.exe
- Add arguments: -NoProfile -ExecutionPolicy Bypass -Command "cd 'C:\Users\YourUser\Microsoft-Rewards-Script'; npm run start"
- Start in (optional): C:\Users\YourUser\Microsoft-Rewards-Script
- Finish the wizard, then edit the task ? General tab:
- Enable Run whether user is logged on or not for background execution.
- Check Run with highest privileges if required.
- Test with Run. Redirect output to a log file by appending | Tee-Object -FilePath C:\Logs\rewards.log to the PowerShell command.
Prefer a batch file? Create un-rewards.bat with cd /d C:\Users\YourUser\Microsoft-Rewards-Script and pm run start, then point the task to that file.
Linux / macOS (cron)
- Verify a manual run succeeds: pm run start from the project directory.
- Edit the crontab: crontab -e.
- Add an entry (example: 09:15 every day):
cron 15 9 * * * cd /home/you/Microsoft-Rewards-Script && /usr/bin/env npm run start >> /home/you/rewards.log 2>&1 - Save and exit. Confirm execution after the first trigger by inspecting the log file.
Need multiple passes? Add additional cron lines with different times (e.g., <20> 9 * * * and 30 18 * * *).
Systemd Timer (Linux alternative)
-
Create /etc/systemd/system/rewards-bot.service: `ini [Unit] Description=Microsoft Rewards Bot WorkingDirectory=/home/you/Microsoft-Rewards-Script
[Service] Type=oneshot Environment=NODE_ENV=production ExecStart=/usr/bin/env npm run start `
-
Create /etc/systemd/system/rewards-bot.timer: `ini [Unit] Description=Run Microsoft Rewards Bot daily
[Timer] OnCalendar=--* 09:00:00 Persistent=true
[Install] WantedBy=timers.target `
-
Enable the timer:
ash sudo systemctl daemon-reload sudo systemctl enable --now rewards-bot.timer -
Check status with systemctl status rewards-bot.timer and recent runs via journalctl -u rewards-bot.service.
Docker & Containers
- The container now performs a single pass by default. Restart it on your schedule (host cron, Kubernetes CronJob, etc.).
- To keep scheduling inside the container, set environment variables:
yaml USE_CRON: "true" CRON_SCHEDULE: "0 9 * * *" # Daily at 09:00 RUN_ON_START: "true" # Optional immediate run when the container bootsThe entrypoint installs cron, runs the command according to CRON_SCHEDULE, and tails /var/log/cron.log. - Persist ccounts.jsonc, config.jsonc, and sessions/ with volumes so each run shares state.
Troubleshooting
- Ensure dependencies are installed ( pm install) and the project is built ( pm run build) after updates.
- Use absolute paths in scheduler commands to avoid working-directory issues.
- Redirect stdout/stderr to log files for easier debugging.
- Rerun the Startup Validator by executing pm run start once after configuration changes.
Next steps: Configuration <20> Docker <20> Humanization