From d767f7ab3f5e689ce379f998108e79fa0c44f172 Mon Sep 17 00:00:00 2001 From: CJ Date: Thu, 7 May 2026 21:58:40 +0100 Subject: [PATCH] Update README.md --- README.md | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6db891d..1655462 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,133 @@ -# RUST-Wipe-Bot +# Rust Wipe Countdown Discord Webhook -A bot that updates an embed with RUST server wipe countdown. \ No newline at end of file +A lightweight Python script that automatically posts or updates a Discord embed showing the **next Rust monthly wipe**, including: + +- A DST‑safe UK timestamp (auto‑adjusts GMT/BST) +- A relative timestamp (`in 3 weeks`, `in 2 days`, etc.) +- A dynamic colour indicator (green/yellow/red) +- A 10‑segment emoji progress bar +- A “Last updated” footer timestamp +- Automatic create/edit mode for Discord webhooks + +Perfect for Rust community servers that want a clean, automated countdown updated via cron. + +--- + +## How It Works + +The script calculates the **first Thursday of next month** — the official Rust wipe day — and sets the wipe time to **19:00 UK time**. + +### DST‑Safe Date Handling + +The script uses: + +- `pytz.timezone("Europe/London")` +- `tz.localize(...)` +- UTC conversion only when generating the UNIX timestamp + +This ensures the embed always shows **19:00 UK time**, even when the UK switches between GMT and BST. + +### Dynamic Colour Logic + +The embed colour changes based on how many days remain: + +| Days Left | Colour | Meaning | +|----------|--------|---------| +| > 7 | Green | Plenty of time | +| 3–7 | Yellow | Getting close | +| < 3 | Red | Imminent wipe | + +### Emoji Progress Bar + +The script calculates the time between: + +- **Last wipe** (previous first Thursday @ 19:00) +- **Next wipe** + +Then fills a 10‑segment bar with: + +- 🟩 (green) +- 🟨 (yellow) +- 🟥 (red) + +depending on how close the wipe is. + +Example: +🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜ 30% + + +### Webhook Create/Edit + +The script supports two modes: + +- `"create"` — posts a new message +- `"edit"` — updates an existing message using its ID + +This allows you to run the script via cron without spamming your channel. + +--- + +## Configuration + +Before running the script, update the following fields: + +```python +WEBHOOK_URL = "" +MODE = "create" +MESSAGE_ID = "" +``` + +### 1. WEBHOOK_URL +Paste your Discord webhook URL: +```WEBHOOK_URL = "https://discord.com/api/webhooks/XXXX/XXXX"``` + +### 2. MODE +- First run: + ```MODE = "create"``` +- After the message is created, copy its ID and switch to: + ```MODE = "edit"``` + +### 3. MESSAGE_ID +Only required in edit mode. + +Right‑click the message → Copy Message Link → extract the ID at the end. + +Example: +```https://discord.com/channels/.../1555000080555554444``` + +So: +```MESSAGE_ID = "1555000080555554444"``` + +## Installation +Install dependencies: +```pip install requests pytz``` + +## Running the Script +Manual Run: +```python updater.py``` + +Cron Automation (Recommended) +Example: update every hour +```0 * * * * /usr/bin/python3 /home/pi/discord-bot/updater.py``` + +## File Overview + +| Function | Purpose | +|----------|--------| +| next_first_thursday() | Calculates next Rust wipe date/time (DST‑safe) | +| get_dynamic_color() | Chooses embed colour based on days remaining | +| build_progress_bar() | Generates emoji progress bar | +| create_message() | Sends a new webhook message | +| edit_message() | Updates an existing webhook message | +| Main block | Chooses create/edit mode and sends the embed | + +## Example Output + +``` +Next server wipe: +Thursday, 4 June 2026 19:00 +Relative: in a month + +🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜ 20% +Last updated: 2026-05-07 20:47:27 +```