Releases: Worldbuilding/kaztron
Releases · Worldbuilding/kaztron
v2.1.1
v2.1
New Features
For Everyone
- Quotes Database. Now you can save and relive those hilarious moments forever! And unlike pins, there's no limit. #73
- Writing Sprints allows users to hold writing sprint events, in which several users get together to work on a writing project for a fixed amount of time and compete on productivity. [For /r/Worldbuilding: #writing only] #3 #65 #88 #64 #66 #67 #63 #62 #68
- Reminders allows you to ask the bot to remind you about something later. #41 #77
- Voicelog - see who's entering and leaving voice chat. No more "wait, who just joined?" moments!
- Dice .choose command. Can't make a decision? Let a robot choose for you!
- KazTron is now iOS-friendly for quoted arguments. iOS defaulting to smart quotes is still stupid, though.
For Mods
- [WORLDBUILDING ONLY] Managed role for "Moderator On Duty" using the
.checkin
and.checkout
commands. (See Grine_ for how we're supposed to use this, I don't know his intention here!) - Userstats collects anonymised activity information on the server. #60
- Role Manager now allows easy configuration of managed roles, similar to
.spotlight join
and.spotlight leave
- either mod only or usable by any user. Ask a Bot Team member if you want a new role to be added to the bot. #25 - [WELCOME] Users leaving the server are logged in #bot-output. #44
- Some mod-channel-only commands, if used in the wrong channel, will automatically be deleted (e.g. if you try to add a note in a public channel). This mostly affects ModNotes and WordFilter.
Modtools and Modnotes
- IMPORTANT! Modnotes are now shown in chronological order. The last page (most recent records) is shown by default.
- Tempbans (mutes) are now automatically managed! Tempban modnotes will automatically be enforced and expired according to the expiry date (±1 hour). Use
.tempban
(tempban docs) to tempban a user and add a modnote in one command. #1 - Modnotes will track a user's username and nickname changes as aliases whenever you access that user's notes (notes, add, etc.). #71
.notes add
now allows you to attach/upload one file (screenshots, etc.). Make sure the file is included in the same message as the command. #43.notes expires
lets you modify the expiration date of an existing modnote. notes expires docs #89.notes temps
shows a list of currently active tempbans. notes temps docs.whois
now lets you search for any user currently on the server, by exact or partial name match, exact name+discriminator match, or exact Discord ID match.
Spotlight
- Spotlight queue now tracks a full date range. Please read the docs for changes to the command syntax. #6
.spotlight queue showcase
(showcase docs) gives a copy-pastable listing of the queue for a given month, for announcing upcoming spotlights publicly. Implementation per Yazuki's requirements. #40
Minor and Internal Enhancements
- [BOOTSTRAP] Daemon mode
- [BOOTSTRAP] Rewrite for greater usability (start/stop/restart commands)
- [CONFIG] Enhancements to save functionality (write-delete-rename) to reduce likelihood of data loss or corruption of JSON state files. #78 #79
- [CONFIG] Config files are written to disk prior to any expected or unexpected exit to prevent data loss.
- [CORE]
.info
links are configurable inconfig.json
, not purely hardcoded. Removed spotlight from hardcoded links. #58 - [CORE] Error handling includes the possibility of deleting the message that invoked a command.
- [KAZCOG] KazCog base class with various bot-wide convenience functionality. Related: #80
- [LOGGING] Configurability of logging and rotating logs to reduce ridiculous log sizes. #50 #103
- [MODNOTES] User and note ID are now mentioned in the confirmation message for
.notes add
. - [UTILS] Configurable date/time formats via
config.json
- [UTILS] Improvements to time formatting across the board #49
- [UTILS] Refactor of
utils.strings
module for more logical package organisation - [UTILS] Add
utils.dateparse.parse
andutils.dateparse.parse_daterange
, with default settings for KazTron - [UTILS] Pagination module added. Modnotes converted to it.
- [UTILS] Add NaturalInteger converter, tolerant of thousands separators (comma and dot)
- [UTILS] Add option to delete command-invoking message when the mod-channel check fails (unauthorised channel).
Bugfixes
- [CORE] Do not report command-not-found for the emoticon
._.
and similar strings #56 - [MODTOOLS] Priority of distinguish role nondeterministic for users who have multiple distinguishable roles (
.up
and.down
). - [MODNOTES] Fix unhelpful error message when adding a modnote with no note text.
- [SPOTLIGHT] Fix error when
.spotlight queue next
called when queue is empty - [VOICELOG] Users' voice roles would not update on bot boot after downtime/disconnect. #55
- [UTILS] Fix parse_keyword_args fails to identify the last value when no non-keyword content follows the keywords
v2.1 release candidate 2
Changelog
- Fix incorrect formatting of some error messages
- Sprint: Fix weekly report would fail with AttributeError
v2.1 release candidate 1
Change log
Worldbuilding-specific
.checkin
and.checkout
now respond in-channel instead of PMing
Startup
- Add additional logging in bootstrap to potentially catch an observed but unlogged crash/quit
- Fix bugs in KazCog setup
- Fix wrong HOME directory when using daemon mode
- Add
restart
command to startup script (daemon mode only)
Core
- Add NaturalInteger converter, tolerant of thousands separators
- Add username/nickname search functionality to
.whois
- checks: Add option to delete an invoking message used in an unauthorised channel
- Fix parse_keyword_args parse failure when no non-keyword content follows the keyword part
- fix utils.datetime.parse error if string fails to parse
- fix utils.datetime.parse_daterange error swapping dates if the endpoints are mis-ordered
Modnotes
- Fix unhelpful error message when adding modnote or tempban with no note text
Quotedb
- Enh:
.quote grab
will not grab the invoking command if the invoking user is grabbing themselves
Role man
- Add configurable options for PMing response and deleting the original command message for join/part commands
- Refactoring for code cleanliness
Spotlight
- Fix error with
.spotlight queue next
if queue is empty
Sprint
- Fix
unload_kazcog
was erroneously a coroutine - Add
.sprint cancel
as an alias of.sprint stop
- Fix multiple weekly report messages in the case that the bot dis- and reconnects to Discord
- Fix weekly reports cumulate over all time instead of restarting calculation weekly
API libraries
- Fix argument parse error in gsheets driver when using the new launch script
v2.1 beta 2
Various deployment fixes.
- Fixed a chown problem with atomic_write
- Fixed filesystem actions (state.json write particularly) occurring before daemonisation in daemon mode
- Fixed console logging never configured, TypeError (NoneType), when attempting to start in debug mode with daemon mode configured
v2.1 beta 1
Feature freeze for v2.1.
Changelog
Worldbuilding-specific
.checkin
and .checkout
to mark mods on/off duty (non-code, just a note for the community release notes)
New features
- Module: quote database (quotedb) (#73)
- Module: activity statistics (userstats) (#60)
- Module: voice tools (voicelog) (#82)
- Core feature: Daemon mode for running as an always-on service on POSIX
- Enh: Restructured bootstrap/start script to be more usable
- Fix: Monkey-patch to handle smart quotes in commands (because iOS is stupid and defaults to smart quotes) (#90)
Core/Framework
- New: KazCog unload hook which is called on shutdown - can be used to e.g. ensure data is saved to state.json or disk before bot exits
- New: KazCog-based cogs can use a custom JSON file instead of state.json (#80)
- New: KazCog convenience functions for channel validation and output channel messages
- New: Configurable rotating logs (#103)
- Enh: KazCog writable configuration files (state.json and custom ones) are written to disk upon bot shutdown to prevent data loss (Cogs can use the hook described above if they need to write data to the configuration object first)
- Enh: KazCog output channel and channel validation convenience functions/properties
- Enh: on_error_rollback moved to database driver
- Enh: utils.strings methods moved to more appropriate places
- Enh: added safe atomic write to KazConfig (#78, #79)
- Enh: Allow
.info
links to be customised in the config.json file, move spotlight link there (to allow non-worldbuilding bot instances not to have worldbuilding-specific links) (#58) - Enh: Add
utils.dateparse.parse
, convert direct uses ofdateparser.parse
to it (#70) - Fix: UNIX timestamps in persisted state.json were incorrect in reminder/spotlight/sprint (#69)
- Fix: KazCog
self.cog
not available before on_ready event (esp. problematic for error handling pre-on_ready) - Fix: Do not report "I don't know that command" errors on more strings like the emoticon
._.
(#56)
dice
- New:
.choose
command to randomly choose from several choices
modnotes
- Feature: expires command modifies the expiration date of a note (#89)
- Feature: auto-record user nickname/username as aliases at user lookup time, when not already on file (#71)
- Change: Notes listings are now chronological, with the default page being the last page
- Enh: Clean up record formatting code and converted to use the Pagination module (#85)
- Fix: add: mention user in 'note added' message (#61)
modtools
- Fix: tempban hourly tick was not working properly due to error handling change in bbeb9c4
- Fix:
.up
/.down
priority of distinguish role not consistent for users who have multiple distinguishable roles
reminder
- Enh:
.remind 10 minutes: ...
is now valid (#77) - Fix: clear would not cancel reminder tasks
role_man
- Moved voice features to voicelog cog
spotlight
- Feature: Queue now stores date ranges instead of just dates
- Change:
.spotlight queue add
can no longer directly take an application ID (instead use.spotlight select
)
sprints
- New: Allow
.w c
during sprint and add a.w final
to allow revising wordcount inputs (#65, #88) - New: Per-week statistics and weekly statistics reports (changes
.w stats
and.w leader
commands) (#64) - New:
.w statreset
command to clear your own stats (or anyone's for moderators) (#66) - Enh: stats: show collection start date (#67)
- Enh: Refactor of stats storage structures - old stats will need to be manually cleared or converted in state.json
- Fix: stats: unit of "average time" was incorrect (#63)
- Fix: better config validation at startup (#62)
- Fix: mention winner in congratulations message (#68)
v2.1 alpha 1
- Feature: Writing Sprints (#3)
- Feature: Role Management Commands (#25)
- Feature: Reminders (#41)
- Feature: Tempban/mute automatic management (#1)
- Enh: Modnotes
add
command now allows file and image attachments (#43) - Enh: Modtools: Expanded whois to search by name, name+discriminator, or ID
- Enh: Spotlight: Added date tracking to queue (#6)
- Enh: Finer control over logging to reduce ridiculous log sizes (#40)
- Enh: Configurable date/time formats
- Enh: Improvement of time formatting in all functions (#49)
- Enh: Welcome module also detects users leaving server (#44)
- Enh: Configurable log verbosity for dependencies (reduce ridiculous log sizes) (#50)
- Fix: Errors or data loss during startup, between on_connect and on_ready (#52)
- Fix: Voice role would not update on boot after downtime (#55)
v2.0.1 - Minor bugfixes
This release fixes a number of minor bugs and includes cosmetic enhancements from moderator team feedback.
- Enhancement: spotlight embed appearance improved per feedback (#40)
- Enhancement: Minor changes to
.info
and startup info, changed inline changelog to a link - Fix: Modnotes: reply with new note ID on add (#46)
- Fix:
.help notes add
would give a size error instead of a help message - Fix:
.wb
without arguments could randomly select an out-of-range index (#45)
v2.0
- New: Internal rewrite for maintainability & reliability
- New: Modnotes feature
- New: Spotlight: queue management
- New: Spotlight: automatic assignment of Host role
- New: Refactor of command UI
- New: Output message and usability improvements
- New: Improved logging facilities
- Fixed: Various bugfixes - see git history