Skip to content

Changelog

Justin edited this page Jun 17, 2026 · 9 revisions

🛠️ Version v2.0.1 (Current)

📸 Attendance

  • Players who score 0 points in Foundry and Canyon Clash are now automatically marked Absent, and you can mark players absent manually too.
  • New CSV member import for adding lots of members at once.
  • You can now delete an attendance event uploaded by mistake.
  • Much better screenshot reading: improved handling of non-English names (Arabic, etc.), names mixed with numbers, and players shown without a score.
  • Smarter duplicate-name matching so same-named players land on the right person.
  • Fixed combat power being overwritten with event points.
  • Fewer pop-ups while reviewing; they now appear only when you actually change a player match.

🐻 Bear Tracking

  • Fixed row editing not picking up the ID you typed.
  • Adding an ID now confirms the player it matched.
  • Added a note that bear mails only list the top ~10 players by damage.

🩺 Reliability & self-hosting

  • Fixed OCR not working properly on headless (cloud/VPS) servers.
  • Fixed high CPU usage and crashes on low-memory VPS hosts.
  • Fixed installs failing with "no space left" on some VPS hosts even when disk was actually free.
  • Snappier menus and general performance improvements, plus automatic cleanup of leftover update files.

🛠️ Version v2.0.0

📋 TL;DR

  • 🏠 Main Menu refactor — the old "Settings" menu is now a unified Main Menu across the whole bot
  • 📸 Attendance OCR — upload in-game event mail screenshots and the bot logs who showed up along with their scores
  • 🐻 Bear Hunt damage tracking — record total and individual damage by uploading screenshots
  • 💪 Power & Combat Power tracking — pulled from attendance screenshots, including per-alliance power rankings
  • 🩺 Bot Health dashboard — API/DB status, system info, cleanup tools, bot and cog restart
  • 🤝 Alliance Hub overhaul — Alliances menu rebuilt for a cleaner flow with fewer clicks
  • 🔐 Permissions overhaul — clearer tier-based access with support for multiple global admins
  • 🎁 Gift Code refactor — split into focused parts, queue system, kinder to limited-resource hosts
  • 🌐 Proxy support for gift redemption calls, so Tovarex gets rate-limited less
  • 🎮 Bot presence — set the bot's Discord status/activity text yourself
  • 🛡️ Self-healing main.py — it got tired of your missing cogs, so it now fixes itself for you
  • 🛠️ Better bot startup — cleaner, clearer console output; only significant errors show up on the console
  • Bot Support & About — one-click log gathering for tickets and a link to support caffeinated developers
  • 🐛 Many 'bug fixes' (aka feature improvements) and much-improved stability

🏠 Main Menu Refactor

  • The old "Settings" menu is replaced by a unified Main Menu.
  • Cleaner routing and navigation across the bot and less clicking for the button you need.
  • The "Other Features" button is gone with its options moved where they actually belong.

📸 Attendance OCR (New)

Stop tracking attendance manually. Upload the in-game event registration and result mail screenshots for Foundry and Canyon Clash and more, validate and adjust briefly if needed, then save the results. Quick and efficient.

  • Reads your screenshots — supports Foundry Battle, Canyon Clash, Alliance Showdown, and Power Rankings mails. The bot pulls out the player names and numbers, matches them to your alliance roster, and shows you a quick review before saving.
  • Smart name matching — handles fancy/decorated nicknames and a wide variety of alphabets, learns from any corrections you make, and can fall back to matching by any player ID you specify.
  • A review-and-fix step — nothing is saved blindly. Check the matches, fix any issues, then submit. Saved events can be reopened and edited later as well.
  • Attendance history per player — see who's been showing up over time.
  • Reworked Attendance menu — now an alliance-scoped hub that ties session marking, history, and reports together.
  • Updates each member's Power and Combat Power whenever you process Foundry and Canyon Clash event registration screenshots.
  • Power shows up in the member list, a new Power Rankings view, the /w command and exports.
  • Power Rankings screenshots are supported too if you want to update rankings more often than Foundry/Canyon registration would permit.

Note: Currently only supports English-language UI screenshots. Other languages will be included in the future.

🐻 Bear Hunt Damage Tracking (New)

  • New Bear Track feature (idea and initial code by Destrimna) — records, views, and charts bear hunt damage per alliance.
  • Upload bear hunt screenshots — the bot reads the damage numbers and maps them to your registered members.
  • Smart name matching — just like attendance OCR, it handles fancy/decorated nicknames and a wide variety of alphabets, learns from any corrections you make, and can fall back to matching by any player ID you specify.
  • Smart OCR engine handling — the bot checks which OCR models are needed based on your alliance's player names and uses only those needed to successfully handle your alliance's names.
  • Re-run the read with a different OCR engine in case of any issues reading names.
  • Per-player damage history with hour / day / month filters, plus hunt views and damage charts.
  • Optional auto-delete of uploaded screenshots and a configurable review timeout.
  • Yes, this feature will eventually be merged into Attendance.

Note: This feature already supports all in-game UI language screenshots.

🩺 Bot Health (New)

  • A new Bot Health tracker with at-a-glance status for:
    • API connectivity
    • Database health
    • System info
  • Restart controls — reload a single cog or the whole bot from the menu directly.
  • Cleanup tools to clear out old files and keep the bot running well.
  • Built so admins can self-diagnose without digging through logs directly.

🤝 Alliance Hub Overhaul

  • The Alliances menus were rebuilt and unified for a cleaner flow with fewer clicks, including member tasks (transfers, removals, sync) which now live in one consistent alliance flow.
  • Opening the Alliances menu leads to an alliance selection drop-down along with buttons for global actions.
  • Selecting an alliance to manage opens the alliance-specific settings. Manage members, set up channels, modify settings, view member history and power rankings and more...
  • Alliance-related cogs were unified under a consistent alliance_* naming scheme:
    • id_channelalliance_id_channel
    • walliance_w_command
    • logsystemalliance_logs
    • controlalliance_sync
  • Confusing "Control" term renamed to "Sync", with options to auto-delete sync progress messages after completion and post the sync and change messages silently.

🔐 Permissions System Overhaul

  • Rebuilt around a single, central permissions manager.
  • Clearer tier-based access: Owner / Global / Server / Alliance.
  • Multiple global admins are now supported, with quick and easy promotion.
  • Buttons you can't use are now consistently grayed out instead of complaining when clicked.
  • Standardized "you don't have permission" messaging everywhere.

🎁 Gift Code Refactor

  • The one giant gift-code file was split into focused parts with redemption logic, settings, UI, and channel handling now separate; this makes it easier to maintain.
  • The redemption flow was tuned so it doesn't overwhelm low-resource hosts.
  • Entering a gift code manually now also queues it for auto-redemption.

🛠️ Better Bot Startup

  • The console output at startup was completely reworked — clear phases, readable status, far less noise.
  • Startup, the live console display, and restart handling were split out of main.py into their own tidy pieces.
  • A big main.py cleanup — dead code trimmed and the startup steps made clearer.

🎮 More Features & Fixes

  • Request Support can now bundle your logs into a single zip (sanitized of your sensitive bits), so you can drop it straight into a support thread with no further details and hope the underpaid developers will figure out what went wrong.
  • Updated About Project with project info, contributor links, and a link for anyone who wants to show their love for Python bot development.
  • When members self-register with /register, their Discord account gets tied to their in-game ID (shown in /w when available).
  • Added a manager that loads/unloads the image-reading (OCR) models intelligently on demand.
  • Implemented a central queue that runs heavy operations (gift redemption, member adds, OCR jobs) one at a time to avoid stepping over each other and overloading the bot.
  • Notification features renamed from bear_trap_* to notification_* so they're event-agnostic.
  • Set the bot's Discord status and activity text (e.g. "Playing Whiteout Survival") from the Maintenance menu.
  • Added HTTPS_PROXY support so redemption calls can route through a proxy.
  • Dropped in main.py with no cogs/ folder? It now downloads the matching source and restarts itself, deploying itself in one step to avoid support headaches.
  • Advanced: the source URL can be overridden with BOT_BOOTSTRAP_URL (handy for forks and testing).
  • A new tests suite (pytest) guards against code regressions. Ships only to people cloning the repo with git (excluded from release downloads) and stays versioned alongside the code it tests.
  • Quieter connection handling — the bot no longer spams "connection issue" messages on brief API blips; it only alerts when the API genuinely appears down.
  • Automated testing (CI) jobs updated for the latest bot messaging changes.
  • No more notification spam when the bot loses access to a channel or gets kicked.
  • Bear Hunt & Attendance reviews no longer falsely "expire" — after you successfully submit (or cancel) a review, it stays put instead of getting overwritten with an "expired" notice hours later.
  • Alliance deletion cleaned up — deleting an alliance now reliably removes its members, and any orphans are detected on startup with one-click cleanup (or reassignment).
  • Upstream HTTP hiccups (403/429/502/503/504) treated as temporary, preventing wrongful "code invalid" marks.
  • Friendlier error handling in a few menus and standardized verbosity (print and log errors, log everything else).
  • onnxruntime engine for OCR and CAPTCHA moved over to the stable channel when running Python 3.14.
  • Lots of dead-code removal and structural cleanup.

🛠️ Version v1.4.3

  • Added support for custom time ranges in the member change tracking (name/furnace change history)
  • Added option under Bot Operations > Control Settings to auto-delete Alliance Control messages (messages are still kept by default; enable on a per-alliance basis)
  • Added session timeouts, closure and various other code enhancements in an attempt to fix the bot crashing during redemption
  • Fixed the issues causing admins to be unable to view or edit Notifications

🛠️ Version v1.4.2

⚠️ Due to updated packages used by the bot, this release requires Python 3.11+. Please ensure you are using at least Python 3.11 before you update to this version of the bot, or you may encounter issues. ⚠️

  • New Themes ("Pimp My Bot") cogs with contributions from @G0DeSs76 and @bahraini69
    • Fully customize your bot with custom themes including dividers, colors and emoji customization.
    • Import and export themes; different themes can be applied on different servers
    • For details, please check: https://github.com/whiteout-project/bot/pull/76
  • Permission system refactor - we now use a separate permission handler and fixed several issues.
    • A "server admin" with no alliances assigned will now have access to all alliances on the respective server
    • Assigning specific alliances to the server admin will restrict them to manage only those particular alliances
    • Buttons that shouldn't be accessible are now properly grayed out instead of providing errors
  • Notifications - Fixed issues with the mention message not appearing with notifications
  • Bot - Further improvements for Python 3.14+ support
  • Bot - Improved detection when running in a container
  • Many other minor fixes/changes

🛠️ Version v1.4.1

Quick patch for Python 3.14+ support along with some important fixes.

  • Python 3.14+ compatibility via onnxruntime nightly releases
  • Announcement channel support for Wizard, Schedule Boards & notification channel selection
  • New {tag} variable for mentions with warning for improper @tag usage
  • Option to reset notification event templates to default
  • Invalid ID removal now requires 3 consecutive API errors to prevent false deletions
  • Fixed custom template images & thumbnails not being used in Wizard
  • Fixed Mercenary Prestige/Caesares Fury boss schedule (now repeats every 3 weeks)
  • Fixed ID channel scanning wrong time window on startup & silenced exception reactions
  • A few other minor bug fixes

🛠️ Version v1.4.0

Bot Core

  • Windows startup now checks for Visual C++ Redistributable and warns if missing
  • Graceful shutdown with Ctrl+C handling implemented (no more confusing exit tracebacks)
  • Docker image has been set up and auto-builds via CI on release
  • Various Docker deployment improvements and fixes (because Dom loves Docker 🐳)
  • Member list Import/Export added (CSV & TSV support, incl. IDs and other parameters)
    • Exports are sent via DM with fallback to ephemeral in-channel
  • “FID” removed from UI, now consistently labeled “ID”
  • Documentation moved from README to Wiki
  • Bot Operations > Control Settings:
    • Toggle member removal on transfer
    • Optional notification on removal

Attendance

  • Attendance marking has a new Multi-select UI (much faster to use)
  • Added support for Legion selection to properly track past attendance
    • Edit attendance sessions manually and set to the correct Legion
  • Added list sorting by:
    • Score
    • Name (All / Present-first / Absent-first)
    • Last Attendance
  • New Sort Order settings menu
  • Added “Post to Channel” for easy attendance report sharing
  • Fixed Arabic name display in text-based reports
  • Fixed report generation errors

Alliance

  • View Members list now shows ID and State
  • Unified manual alliance control (single & multi-alliance)
  • Added Multi-select UI for:
    • Member transfers
    • Member removals
  • Added safety:
    • Auto-removal capped at 20% of alliance per run

Minister Management

  • Minister menu now shows channel configuration status with warnings
  • Pagination added to time-slot selection
  • Time Offset Mode added (:15 / :45 instead of :00 / :30)
  • Proper handling for right-to-left Arabic names
  • Channel list display modes:
    • Available only
    • Booked only
    • Both

Minister Archive (New)

  • New Minister Archive cog added to Minister menu
  • Save full appointment lists & change logs to the database
  • Option to clear all active appointments & logs on archive save
  • Change logs now always saved to SvS database
  • Added controls to:
    • View archives
    • Post archived lists to a channel
    • Delete archives on demand
  • Archive features restricted to Global Admin

Gift Code

  • Updated to the latest CAPTCHA model from Bahraini for optimal gift code redemption
  • Added support for:
    • VIP-only codes
    • Minimum furnace level codes
  • Added handling for reactivated gift codes:
    • Reactivation clears previous redemption records
  • Made the Gift Operations embed text more helpful for newer users
  • Added some post-redemption details about any failures that happened
  • API-received codes are now always validated locally on reception
  • Added configurable redemption order to prioritize alliances
  • The message about a new Gift code via API will now be posted to gift channels too
  • Consolidated the embeds sent to admin during manual all alliance redemption
  • Fixed CAPTCHA “Too Frequent” handling with proper rate-limit backoff
  • Fixed inconclusive API validation not triggering auto-redemption

Register Feature (New)

  • Added /register command for self-registration
  • Users can select their alliance manually
  • Alternative to ID channel registration
  • Toggled via Other Features menu

Notification System (Major Overhaul)

  • New Setup Wizard cog to easily configure a batch of common event notifications
  • New Schedule Boards cog for displaying upcoming events
  • New Event Templates cog to help the wizard set up events
  • Improved Custom Notification creation with Event Type selection
  • Notifications now auto-delete (enabled by default, configurable):
    • After the event duration is up
    • Or after 60 minutes by default if duration is not set
  • Added new notification text variables:
    • %n – Event Name
    • %e – Event Time
    • %d – Event Date
    • %i – Event Emoji
  • Notification view enhanced:
    • Shows Event Type & Next Occurrence
    • Notification ID visually de-emphasized

Notification Schedule Boards

  • Dedicated cog for displaying upcoming events
  • Accessed via “Schedule Boards” button
  • Supports boards for:
    • Channel-specific notifications
    • Server-wide notifications
  • Boards auto-update:
    • On event trigger
    • On event update
    • When events reach Today / <6h / <1h
    • On bot startup
  • Integrated with the Setup Wizard
  • Supports pagination, filtering, timezone handling & auto-pinning

Notification Setup Wizard

  • Step 1: Channel, mention, timezone (default UTC), trigger times (default 10m, 5m, event time)
  • Step 2: Interactive event selection & configuration
  • Step 3: Full preview before creation
  • Step 4: Confirmation & optional Schedule Board creation
  • Supported events:
    • Bear Trap
    • Crazy Joe
    • Foundry Battle
    • Canyon Clash
    • Fortress Battle
    • Frostfire Mine
    • Castle Battle
    • SvS
    • Mercenary Bosses
  • Re-running the wizard updates existing wizard-created notifications in that channel
  • Automatic next-occurrence calculation based on global event schedules

Notification Templates

  • New “Browse Templates” menu
  • Pre-built templates for all events (title, description, thumbnail)
  • Fully customizable, adjust them to your liking
  • Live embed preview as you make changes

Maintenance

  • Various code optimizations and dead-code cleanup
  • Squashed many other bugs (see closed issues)

🛠️ Version v1.3.0

Update System Overhaul

  • New Flags Introduced:
    • --beta Pulls code directly from the repository (unstable).
    • --no-venv Skips virtual environment setup (may cause dependency issues).
    • --repair Forces updates to restore missing or modified files.
  • Improved Update Logic:
    • Fetches releases directly instead of relying on patch files.
    • Automatically backs up modified cogs to the cogs.bak directory.
    • Uses SHA hashing for efficient file comparison.
    • Cleans obsolete dependencies automatically.
    • Advises repair when missing files are detected rather than failing silently.

Alliance Improvements

  • Performance and Reliability
    • Member additions now operate at one member per second.
    • Fully respects API rate limits.
    • Centralized queue system managed via login_handler.py.
    • Enhanced error handling and feedback mechanisms.
  • Enhanced Member Management
    • Accepts both comma- and newline-separated FID lists.
    • Prevents duplicate entries before API submission.
    • Improved validation and progress tracking.

Control System Overhaul

  • Speed Enhancements
    • Alliance control operations optimized to one member per second.
    • Removed unnecessary delays between checks.
  • Logging and Maintenance
    • Introduces log/alliance_control.txt for activity tracking.
    • Automatic log rotation (1 MB max, 1 backup).
    • Reduces console clutter.
    • Removes invalid FIDs (Error 40004) and maintains audit records.

Gift Operations Upgrade

  • New OCR Engine
    • Lightweight ONNX model replaces older OCR dependencies.
    • Fully compatible with Python 3.13+ and Alpine Linux.
  • Interface Enhancements
    • New “Settings” button for channel and CAPTCHA management.
    • Instant and periodic gift code validation.
    • On-demand history scans (up to 75 messages).
    • Smart FID prioritization for faster redemption.
    • Option to clear redemption cache.
    • Detailed error logs available in log/gift_ops.txt.

Login Handler (New Cog)

  • Centralized API Management
    • Ensures one login per second without overlap.
    • Dual-API system with automatic fallback.
    • Queue system to prevent simultaneous operations.
    • Integrated with Alliance Cogs; more integrations planned.

Attendance System (New Cog)

  • Event Tracking Features
    • Tracks attendance for Bear, Foundry, SvS, and other events.
    • Maintains historical data for repeated absences.
  • Reporting Options
    • Supports Matplotlib-based visual reports and formatted text reports.
    • Exports data to CSV, TSV, or HTML.
  • Interactive Controls
    • Includes buttons for marking, viewing, and configuring attendance.

Minister Scheduling (New Cog)

  • SvS Preparation Management
    • Simplifies scheduling for Construction, Research, and Training days.
    • Supports both slash commands and interactive buttons.
  • Channel Integration
    • Dedicated channels per prep day with automatic slot updates.
    • Detailed logging for all minister activities.
  • Slash Commands
    • /minister_add, /minister_remove, /minister_list, /minister_clear_all for full management control.
    • Global admin settings for clearing or resetting data.

🛠️ Version v1.2.0

  • Implemented a self-hosted GitLab repo as a backup in case GitHub fails us again.
  • The bot now checks GitHub first, then falls back to GitLab if needed.
  • The bot automatically creates and manages Python virtual environments.
  • Prevents dependency conflicts and ensures smooth setup.
  • Fully supports both Windows and Unix-based systems.
  • Automatically skips venv creation inside Docker/Kubernetes/CI environments.
  • Better troubleshooting help, including the direct Visual C++ Redistributable x64 link.
  • Startup now auto-reinstalls dependencies if broken or missing on startup.
  • It also auto-installs missing cogs from source if they are not found on startup.
  • Should reduce install/update issues across the board.
  • Web editor? History, at least for now.
  • Thanks to @Destrimna, you can now manage all notifications directly via Discord buttons.
  • Old notifications (Embed or Message) remain fully editable.
  • Added “Repeat on specific days” for recurring event scheduling.
  • Replaced the crusty old wosland.com PHP API with a modern, self-hosted Python version. (it's almost the same, but it smells new)
  • Gift codes now auto-sync across all bot instances again. Enjoy the easy and efficient shared redeeming!
  • Includes solid validation logic to block broken or invalid codes before they break the system.
  • Redemptions now follow alliance order instead of chaotic parallel execution.
  • Fixed the dreaded “Sign Error” caused by sneaky right-to-left (RTL) marker characters
  • Removed dependency on external websites for backup creation.
  • Two backup options now available. Sent to you directly via Discord DM or saved manually to the server
  • Backups are 100% under your control. Use it wisely. Or don't.
  • Removed all remaining Relo branding from Support and Startup.
  • Startup now proudly shows off OCR status like it's something to brag about.
  • Removed outdated “Buy me a coffee” link. No coffee for scammers. ☕🚫
  • "Check for Updates" button works again and compares your version file with the latest release tag on our Github.
  • Tons of minor fixes and improvements.
  • For the full list of bugs features, visit GitHub Issues

🛠️ Version v1.1.0

  • 💾 More robust file handling & backups during updates
    Now gracefully sidesteps Windows' favorite pastime: locking files for no reason. May your main.py live a long, crash-free life.
  • ddddocr installation verification added
    Checks that ddddocr and its clingy dependencies are actually installed. No more “I installed it, I swear” gaslighting.
  • 🎯 Selective --ignore-requires-python usage
    Only applies the Python rule-bending to ddddocr, instead of every package. Because not every package needs special treatment.
  • 🐛 Verbose flag added for package installs
    Need to know exactly how the package installation broke? There’s a --verbose flag for that now.
  • 🧾 Added colorama and requests to requirements
    Two more packages join the cult. Because everything is better when you add some color to it.
  • 🚫 Gift code validation delayed to redemption time
    Codes added via "Create Gift Code" or the Gift Code Channel are no longer validated immediately. Instead:
    • They are stored in DB with status pending
    • On first use (or during periodic validation):
      • If valid: ✅ marked as valid
      • If invalid: ❌ redemption stops, status updated to invalid
    • Only validated codes hit the giftcode API (once implemented), reducing unnecessary API traffic.
  • 🔄 New “Change Test FID” button for admins
    Admins can now swap out the test ID used for validating and testing codes. Default: Relo’s ID. Change it. Or don’t. I’m not your dad.
  • 🔙 Removed Yolo’s favorite back button from CAPTCHA Settings
    The back button on CAPTCHA Settings is gone. Yes, really. It’s gone. Are you happy now, @Destrimna?
  • 🐞 Miscellaneous bug fixes
    Squashed several minor but persistent gremlins.
  • 📣 Bear Trap notifications now persist even if the channel disappears
    Previously, if the channel went poof (due to temporary Discord rate limits, for example), all notifications got disabled. That’s been fixed.

🛠️ Version v1.0.0

  • 🔁 Replaced EasyOCR with ddddocr — Faster, lighter, smarter. Like trading a fax machine for a laser cannon.
  • 🛠️ Force-installs ddddocr v1.5.6 with --ignore-requires-python — Because Python 3.13 broke it, but we broke it back.
  • 🧠 Optimized gift code redemption loops — Now redeems faster while expertly dodging the rate-limit police.
  • 🔥 Removed dusty old GPU config junk — No one needed it, especially not our new friend ddddocr. It’s in a nice farm upstate with the other unused settings.
  • 🛡️ Bundled certifi in main.py — Fixes those annoying SSL issues on AWS and friends. Big thanks to @destrimna for reporting, rather than rage-quitting.
  • 🧩 Fixed "All Alliances" feature — It works now. Because @destrimna sent in the fix. MVP.
  • 📉 Trimmed log file and legacy file bloat — Your hard drive can breathe a bit better.
  • 📊 Improved OCR Settings statistics page — More stats. More clarity. Slightly less shame.
  • ♻️ Fixed duplicate install checks on startup & updated main.py to work with our new repository and update method. We pray that it works.
  • ⬇️ Reset the version numbering to start from 1.0.0 for a clean slate. And better vibes. Mostly for the vibes.

Clone this wiki locally