Release Note

v4.0.0

20 July 2026

New Improvements Fixes

New

  • Manual & scheduled community check-ins
    • /checkin wizard now starts with a clear purpose choice, so admins can keep the existing policy reminder flow or post lightweight Community Participation and Community Restart check-ins without mixing all templates into one long list.
    • The seven existing policy reminder templates keep their reaction-based acknowledgement flow, rules reference support, optional role mentions, optional deadline text, and current member-facing copy.
    • Community Participation and Community Restart check-ins use anonymous one-tap buttons, allow members to change their current choice, close after 24 hours, and show aggregate-only results after individual response rows are deleted.
    • Anonymous check-in answers are never shown as member-level data and never change Decay, AHS, review, cleanup, or moderation decisions, giving admins a low-pressure way to hear from quieter members.
    • Scheduled Community Check-Ins now live under /polls_wizard and /polls, with their own Check-Ins channel, Mood-first topic default, 3/5/7/14/30-day wizard cadence choices, and a clear rhythm summary that explains CleanerBot posts one rotating topic per cadence.
    • Scheduled check-ins rotate only the selected Participation, Mood, Energy, and Looking Ahead topics, use the same 24-hour anonymous lifecycle, skip Ghost Mode, and never fall back to the warning channel or another destination.
    • When a scheduled poll or quiz and a scheduled check-in are due on the same UTC day, CleanerBot posts only one community-content item and gives the check-in priority, so admins can run regular prompts without overposting.
    • Premium staff action suggestions turn aggregate signals into practical next steps in the Staff Notification Channel: CleanerBot can privately point teams toward a one-time Community Participation check-in, recurring Community Check-Ins, Check-In settings review, /review coverage, or /review channels when those workflows would help staff verify context before acting.
    • Staff action suggestion cards include the reason, suggested action, privacy note, 14-day pacing, Not now, and Mute suggestions, so Premium admins get timely guidance without member pressure, public noise, or fallback posting to the wrong channel.
  • Border Challenge community activity
    • Any member can now start a cooperative country-border challenge with /border-challenge start, while admins retain control over stopping or restarting it.
    • Members continue the journey by reacting with the flag of a country that shares a land border with the current country. CleanerBot keeps valid answers hidden, validates moves quietly, removes invalid country reactions, and gives rate-limited private tips for unavailable travel reactions without interrupting the Challenge.
    • A 🔎 country-search button lets members submit a country name, ISO code, flag, alias, or close typo through a modal; one clear match advances the Challenge, while ambiguous matches open a private country picker before CleanerBot validates the selected move.
    • A Help button privately repeats the Challenge rules, so members who join later can catch up without scrolling back to the first message.
    • Each successful move posts a clear current-country card, then retires the old active message into a compact Previous country card so the journey stays easy to follow without pinging members.
    • When no valid neighboring country remains, CleanerBot unlocks the ✈️ Travel Joker and starts a new Round from another playable country; hidden ✈️ and sea-only 🚢 reactions also help members pursue full collection coverage without revealing valid answers.
    • Members can use /border-challenge search to find a country flag, Discord flag search code, and ISO code without revealing valid neighboring answers.
    • Members can use /border-challenge collection and /border-challenge missing to post collection progress for themselves or another member with a member mention.
    • After 24 hours without a valid move, or when staff stop the Challenge, CleanerBot ends it with a clear closing message and a start-again command link when Discord supports it.
    • The Challenge includes localized instructions and does not use player scores, leaderboards, or stored move history.
  • Dedicated kick-summary channel
    • Admins can now send kick summaries to a dedicated private channel with /config set kick_announcement_channel.
    • CleanerBot safely falls back to the staff or warning channel when the dedicated channel is missing or unavailable.
  • Member-friendly /about command
    • Members can now use /about to learn what CleanerBot does, how its privacy-first activity tracking works, and which community features they may encounter.
    • It highlights fair inactivity management, explains that CleanerBot does not read message content, and brings together useful commands and official links in one compact view.
    • Commands and links are clickable, making /about a clear starting point for members who are new to CleanerBot.

Improvements

  • Safer poll setup
    • /polls toggle true now checks whether the poll channel can use reactions before activation.
    • When admins enable polls, CleanerBot now ensures the required reaction activity setting is enabled so poll votes can count correctly.
    • Polls now check required permissions when admins enable them.
    • Closed regular poll messages now show the question before the final result, making non-quiz results easier to read.
  • Easier reward setup
    • /reward activity_rewards true now enables the required streak tracking automatically.
    • CleanerBot now points admins to missing reward roles or disabled reaction activity when reward automation cannot work yet.
    • Reward-role wizards now reject roles CleanerBot cannot assign before the configuration is saved.
  • Stronger setup and permission guidance
    • Setup and configuration screens now block unusable role or channel choices before saving.
    • Permission guidance is clearer when a selected channel, role, or feature setup would fail later.
    • Setup preflight now checks configured default and reward roles only when those features actually use them, while treating decay boost roles as references.
    • Event auto-posts and auto-provisioning now check their required permissions when admins enable them.
    • Whitelist changes now warn admins when they hide CleanerBot delivery channels or all visible activity channels.
  • Clearer permission alerts
    • Manual review and Auto-Kick alerts now explain whether admins should check Kick Members, role hierarchy, server-owner targets, or a Discord-side refusal.
    • Inactive, default, and reward-role alerts now explain whether admins should check Manage Roles, managed roles, role hierarchy, or a Discord-side refusal.
    • /config validate and /config check_permissions now surface configured role hierarchy and managed-role blockers before role automation fails at runtime.
    • Monthly review send failures caused by missing Discord access now record channel-permission guidance instead of leaving admins without a config warning.
    • Notification-thread permission alerts now point admins to thread permissions when auto-archive or expiry cleanup cannot modify comment threads.
  • Auto-Kick testing is less disruptive
    • Threshold and decay-rate tuning while Auto-Kick is off no longer triggers the critical-change cooldown.
    • Auto-Kick protections remain in place when Auto-Kick is enabled.
  • Reports and scheduled jobs now respect current settings more reliably
    • /report_inactivity clean=true now excludes exempt-member context, keeping the clean view focused on actionable cleanup entries.
    • The full inactivity report still shows exemptions for audit context.
    • Scheduled monthly reviews and monthly champion jobs now refresh configuration before posting, so disabled or changed settings are respected at execution time.
    • Reward-role automation now refreshes reward settings before changing member roles, so mid-run config changes wait for the next evaluated pass.
    • Large manual-kick batches now split kicked-member summaries into multiple messages so Discord no longer rejects long cleanup summaries.
  • Clearer Free over-limit behavior
    • /checkpremium can now show when CleanerBot is reducing background work for a Free server above the tracked-member limit.
    • Over-limit copy no longer promises indefinite background processing on Free.
    • Stored settings and supported admin checks remain available, while long-dormant over-limit Free servers may have nonessential cached activity data pruned.
    • CleanerBot no longer auto-leaves long-unconfigured or dormant over-limit Free servers. It keeps the server connection, prunes nonessential stored data on a limited rolling budget, and waits for admins to reactivate setup or upgrade.
    • Free servers above the Pro member limit now see Scale as the recommended upgrade tier in over-limit notices.
  • Safer background work across shard changes
    • Server name and member-count updates now stay on the owning shard, preventing duplicate or skipped metadata writes during multi-shard restarts.
    • Notification-thread maintenance now re-checks bot shard ownership before archiving, deleting, or sweeping legacy comment threads.
    • DM reminder delivery now re-checks shard ownership before sending.
    • Weekly leaderboard and inactivity report helpers now refuse to post from non-owning shard workers.
    • Cross-shard dormant cleanup now prunes routed data without requiring the bot to leave the server.
    • Improved backend startup stability and reduced noisy recovery logs during multi-shard restarts.
  • Smaller clarity and localization updates
    • Community Pulse public cards now keep the privacy note below the scene image for easier scanning.
    • Several admin and config messages now resolve through localization instead of showing raw key names, including the /reset_all_decay_scores progress state.
    • Czech inactivity warning text now reads more naturally.

Fixes

  • Community Pulse setup now acknowledges Discord immediately before reposting the public scene, preventing false "application did not respond" notices during channel changes.
  • /config validate no longer blocks setup completion when the optional CleanerBot admin role is not set.
  • Kick summaries now fall back to the effective warning channel before the staff channel when no dedicated kick-summary channel is set.
  • Ghost Mode staff-channel activity announcements now keep member mentions visible without pinging those members.