Automatic update engine for Intent™ BOT v3.0.0 & above
The updater service fetches this URL and uses regex to extract these two values from anywhere in the HTML body:
# Regex patterns used by services/updater_service.py version_match = re.search(r"version=([0-9]+\.[0-9]+\.[0-9]+)", html) zip_match = re.search(r"zip=(https?://[^\s<"']+)", html) # Extracted values: remote_version = "x.y.z" zip_url = "https://github.com/yourusername/intentbot/archive/refs/heads/main.zip"
| Step | What happens |
|---|---|
| 1. Check | Bot fetches this page every 60 minutes via aiohttp |
| 2. Compare | Remote version is compared to the running BOT_VERSION in core/constants.py |
| 3. Skip | If versions are equal → logs "Already on latest version" and waits |
| 4. Download | If remote is newer → downloads the ZIP from the zip= URL |
| 5. Validate | Checks the downloaded file is a valid ZIP before touching anything |
| 6. Backup | Creates a timestamped backup ZIP in data/backups/ |
| 7. Apply | Extracts new files, skipping: data/database.db, .env, logs/, data/backups/ |
| 8. Restart | Bot restarts via os.execv(sys.executable, [sys.executable] + sys.argv) |
To host your own update endpoint, create a simple HTML or text file containing exactly these two lines anywhere in the body, then host it on any static server (Netlify, GitHub Pages, nginx, etc.):
<body> version=3.0.1 zip=https://github.com/yourusername/intentbot/archive/refs/heads/main.zip </body>
Set UPDATE_CHECK_URL in your .env to point to your hosted file.
.env)# Point to your own update server or use the default UPDATE_CHECK_URL=https://update.bot.int.yt # To disable auto-updates, set an empty string # UPDATE_CHECK_URL=