Releases: Sonnet-Discord/sonnet-py
Releases · Sonnet-Discord/sonnet-py
Sonnet V1.2.12-1
Bugs:
- Patch(map): Fatal error on passing -s/-e flags to map without a command
Sonnet V1.2.12 "Feature Together"
Sonnet V1.2.12
Frontend:
- Add(infraction modifiers): Modifiers that add fields to logging embeds
- Add(mutelength): Option for mute command to display mute length to users
- Add(logging): Message content to file logging to capture arbitrary text
- Change(search-infractions): Per Page limit changed to 1-40 from 5-40
- Add(map): Add
-s
flag to map and amap - Add(role-info): Command to return permission and usercount info of roles (extends Sonnet's "Deal With Discord" policy)
Under the Hood:
- Change(autotest): Make autotest use a typesafe wrapper around processes
- Add(unisafe): Unicode safety checker (disallows arbitrary unicode in codebase)
- Add(paginate_noexcept): Complex pagination library that attempts to fit all content within a limited space
- Add(reactionroles): Sanity limit of 750 reactionroles per guild
- Change(coinflip): Command now checks if it is a subcommand, and runs a faster loop if it is
- Add(constants): Self defined permission constants (dpy1.7.3 is out of date in this area)
- Change(urlb): Account for multiline url embeds (this is a discord "feature")
- Change(parse_channel_message): Add reply capture feature
- Add(cache_sweep): commands cache control behavior has been moved to lib_sonnetcommands
- Add(SonnetCommand.sweep_cache): Convenience method to sweep cache after a SonnetCommand runs
- Add(SonnetCommand(aliasmap)): Pass command hashmap directly to automatically reroute aliases
- Change(starboard): Add image url grabbing from message content
- Add(LeXdPyK): V1.4.10: add
--version
flag and user mentions now work for debug commands
Runtime Environment:
- Add(sonnetconfig): Warning about using re instead of re2
Sonnet V1.2.11-1
Sonnet V1.2.11-1
Bugs:
- Fix(search-infractions): Fatal error would raise instead of erroring normally on a shlex parse failure
Sonnet V1.2.11 "PythonicT"
Sonnet V1.2.11
Frontend:
- Change(infractions): infraction perm failure messages will now refer to the bot using the bots name
- Add(ban): -d parameter to specify amount of days to delete messages for
- Add(search-infractions): -f parameter to filter with regex
- Change(search-infractions): arguments are now split using shlex, meaning quotations may be used
- Add(grab-message): -r flag to send the message contents as a file, bypassing discord rendering bugs
- Add(help): help now says when you have the permission listed in per command help
- Add(help): -c flag to only scan for a command, previously if a category and command had the same name it would jump to the category
- Change(version-info): now prints what implementation of python is being used
Under the Hood:
- Add(cmds_to_html): now test for correct permspec on custom permissions
- Add(lib_tparse): typesafe argument parsing library for commands
- Add(CommandCtx): a typesafe ctx object that may be passed to commands instead of kwargs, new api has been implemented without breaking old commands
- Improve(infractions): a "failed to dm" info message will not halt processing of the ban success message anymore
- Refactor: a test set of commands have implemented commandctx with no issues and are more easily typesafe
- Change(cmd_scripting): commands have been reworked to use CommandCtx, making them more readable
- Change(help): split into smaller subcommands to improve readability
- Add(help): ability for modules to supply their own help page, allowing for guild level custom help
- Add(CommandError): a special exception that will print to the user and exit normally instead of raising to the kernel from a command context
- Add(enum_context): nested context manager for a specific dbenum, allowing more concise and less error prone code for accessing said enum
- Add(parse_user_member_noexcept): concept function that raises a commanderror on failure, nominally lowering boilerplate at the call site
- Add(parse_channe_message_noexcept): concept function that raises a commanderror on failure, nominally lowering boilerplate at the call site
- Add(CallCtx,CallKwargs): call modifier functions for easily adapting to new CommandCtx based api
- Change(grab_filter_infractions): now accepts true/false/None for automod, allowing filtering both ways or neither ways
- Change(LeXdPyK): V1.4.8: argparse is now used to aide in commandline arguments, file uses main function instead of segmented startup
Runtime Environment:
- Upgrade(libraries): sonnet has upgraded library versions and added a new library (typing-extensions), you may need to install these to update properly
Sonnet V1.2.10 "Hardened Steel"
Sonnet V1.2.10
Frontend
- Add(list-mutes): Command to list all muted users in mutedb
- Add(remove-mute): Command to remove userid from mutedb
- Change(on_message): Bot will only say its prefix if being mentioned is the entire message
- Add(rejoin-mute): Muted users will be remuted on rejoin
Under the Hood
- Add(classes): Empty
__slots__
to all classes to lower memory footprint - Change(commandapi): Commands no longer need to specify a cache or permission behavior
- Add(db_hlapi.fetch_guild_mutes): Function to grab a guilds mute table
- Add(has_default_avatar): Helper function to check if a user has a default avatar
- Change(lib_compatibility): Version checks now happen at init time, not runtime
- Add(lib_sonnetcommands): Helper to wrap and type a sonnet command
Runtime Environmnet
- Add(BOT_NAME): Config to set the name of the bot
- Add(confcheck): Most string configs are now validated at init time
- Upgrade(dependencies): Sonnet now builds and tests with latest libraries, be sure to update sometime!
Bugs
- Patch(mute-recovery): Make mute recovery only print users to unmute that are not no unmute users
- Patch(user_avatar_url): Would not grab default avatar in 2.0
Sonnet V1.2.9 "Real Users"
Sonnet V1.2.9
Frontend:
- Add(remove-regexblacklist): Remove a regex by its index
- Change(search-infractions): Only specifying a uid will default to user infractions
- Change(help): Typing
help 2
etc for a second help page will prompt the user the correct syntax
Under the Hood:
- Add(clang-format): C formatter
- Change(cloader): Make cloader use long in place of int for arbitrary temp numbers
- Add(slots): Add dunder slots to many classes, lowering class overhead
- Add(format_duration): End user duration formatting for arbitrary seconds (used in mute)
- Change(lib_db_handler): Libraries are now more memory efficient by replacing list comprehensions with generators
- Add(db_hlapi.list_enum): list_enum call to list all primary keys in an enum
- Add(LeXdPyK): 1.4.6: Previously mentioned dunder slots and encoding specifiers
Bugs:
- Patch(encoding): Make all file opens specify utf8 encoding
Sonnet V1.2.8-1
Sonnet V1.2.8-1
Bugs:
- Patch((un)ban|kick): reasons over 512 would error on discords reason end
Sonnet V1.2.8 "Chronos Across Worlds"
Sonnet V1.2.8
Frontend:
- Change(set-viewinfractions): Improved grammar substantially
- Add(url-blacklist): Add url blacklist system
- Add(list-automod): --raw flag to dump to file
- Change(version-info): Discord.py renamed to Wrapper to support pycord going forwards
Under the Hood:
- Change(cloader): Refactored to use memory safe string header implementation
- Change(cloader): Now compiles with
-Wall -Wextra -Werror -O3
- Add(LeXdPyK): Testing for ramfs functionality in CI
- Add(csv blacklists): Add validation of characters inputted to prevent user errors, add - rm flag to clear
- Add(csv blacklists): Overall cleanup on system
- Add(lib_compatibility): compat system to allow the bot to run on dpy/pycord 2.0
- Add(lib_loaders): datetime_unix call to make a datetime from a unix timestamp
- Add(lib_starboard): Starboard deduplication library to prevent non uniform functionality
- Add(LeXdPyK): LeXdPyK 1.4.4, faster and more flexible than 1.4
- Change(db_hlapi): Values that take a sentinel None now check for None, type checks now use isinstance
Runtime Environment:
- If you used LeXdPyK 1.4.1 or 1.4.2 during the development of 1.2.8, you must swap to >=1.4.3 as there is a ramfs bug causing caching errors
Bugs:
- Patch(RegEx blacklist): Multi capture group regex would error the automod parser, it no longer does
Sonnet V1.2.7-2
Sonnet V1.2.7-2
Bugs:
- Patch(antispam): if a user was muted indefinitely and antispam was triggered and antispam was set to auto unmute (non 0 mutetime) the user could escape the indefinite mute via antispam remuting them, this is patched by adding indefinite mutes as a 0 in the mute database, ensuring antispam doesnt clobber it.
Sonnet V1.2.7-1
Sonnet V1.2.7-1
Bugs:
- Patch(search-infractions) Improper bounds check on page index caused fatal error if page queried was one above limit