Files
Microsoft-Rewards-Bot/docs/schedule.md

3.1 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

  1. Open Task Scheduler, choose Create Basic Task..., and name it Microsoft Rewards Bot.
  2. Pick a trigger (daily, weekly, at startup, etc.).
  3. 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
  4. Finish the wizard, edit the task on the General tab, and enable Run whether user is logged on or not. Grant highest privileges if required.
  5. Test with Run. Append | Tee-Object -FilePath C:\Logs\rewards.log to capture output in a file.

Tip: prefer a batch file? Create run-rewards.bat with cd /d C:\Users\YourUser\Microsoft-Rewards-Script and npm run start, then point Task Scheduler to that file.


Linux / macOS (cron)

  1. Run npm run start once to confirm the project completes successfully.
  2. Edit the crontab: crontab -e.
  3. 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
    
  4. 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)

  1. 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
    
  2. 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
    
  3. Reload and enable:
    sudo systemctl daemon-reload
    sudo systemctl enable --now rewards-bot.timer
    
  4. Inspect status via systemctl status rewards-bot.timer and recent runs with journalctl -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:
    USE_CRON: "true"
    CRON_SCHEDULE: "0 9 * * *"
    RUN_ON_START: "true"
    
    The entrypoint installs cron, runs according to CRON_SCHEDULE, and tails /var/log/cron.log.
  • Mount accounts.jsonc, config.jsonc, and sessions/ so each run shares state.

Troubleshooting

  • Run npm install and npm run build after pulling updates.
  • Use absolute paths in scheduler commands.
  • Redirect output to a log file for easier debugging.
  • Execute npm run start manually after configuration changes to trigger the startup validator.

Next steps: Configuration · Docker · Humanization