Skip to content

3.0.0

Choose a tag to compare

@laggron42 laggron42 released this 02 Jan 17:03
· 133 commits to v3 since this release
release/3.0.0
aba4772

This is a major release with multiple breaking changes. Please read this to upgrade your bot, it is not done automatically.

New features

  • Included basic currency support, disabled by default
    • This only provides database columns, admin commands and trading support
    • It is left to 3rd-party packages to make use of this for now
  • Reworked UI using components v2
  • Settings rewrite, now editable on the admin panel, with migration for config.yml

3rd-party package standardization

  • There is now a standard way to extend Ballsdex features via packages
  • Packages are installable via an extra.toml file by users, it is then installed during Docker build
  • Packages are standard pip packages that can be configured via pyproject.toml
    • Extra dependencies can be specified, as well as version constraints on Ballsdex
    • Metadata (summary, authors, links, license) are displayed in /about
  • See https://wiki.ballsdex.com/dev/custom-package/ for details

Trade

  • Everything redone from scratch!
  • Both proposals can be viewed fully with pagination
  • Supports adding currency to a proposal if configured
  • Removed most commands as they are now usable through the new trading menu
  • Hardened security to prevent cheating and errors
  • New bulk add interface, updating the drop-down menu's state and displaying a summary
  • Reduced the possibility of having locked countryballs and needed to wait for 30 mins
  • Reworked /trade history interface, more info displayed, MUCH faster

Commands

  • A lot of /balls commands should be much much faster for those with big inventories
  • /balls duplicate, completion and compare have a reworked interface
  • Most /player commands were unified in a single /player settings command, using V2 components
  • New UI for friend list and block list

Admin

  • All commands are now hybrid!
    • They can be used using slash commands (/admin balls spawn) or regular text commands (b.admin balls spawn)
  • Admin roles are ditched, Django permissions are used for finer permission control across all server
  • Static admin server configuration is ditched, b.admin syncslash is used to register /admin on the current server
  • New text command helpers were added to help using the new commands
  • V2 components

Menu and paginations

  • Completely reworked pagination system!!
  • Refreshed UI with components V2
  • Lazy data querying, allowing faster paginations
  • Allows multiple paginations on the same message

Dev and management

  • Reworked all logging management
    • A new command b.logs will let you view the bot's most recent logs
    • Some log events may be sent to the configured webhook
  • Reworked b.dbeval to use the psql interface. This removes all limitations on raw SQL queries and enables psql meta-commands

Build and tooling

  • Brand new mkdocs documentation available here: https://wiki.ballsdex.com/
  • Moved from Poetry to uv package manager
  • Github CI will report errors and warnings directly on pull requests
  • Moved to ruff for formatting, import sorting and linting, ditching black, flake8 and isort
  • Include VScode recommended settings, extensions and debug configurations
  • Reworked Docker build, collects staticfiles on build, now removing bind mounts and making all code read-only inside containers
  • nginx now included in docker compose, removing the need to serve static files manually
  • Improved docstrings, loaded on the new wiki
  • Pinned postgres to version 18
  • A Docker Compose watch config has been added to facilitate coding on Ballsdex

Utilitary functions

  • New check decorators for the Django authentication system
  • pagify supports prefix and suffix
  • Reworked transformers (autocompletion) to work with hybrid commands, allows any Django QuerySet to be passed for filtering

Advanced

  • Enable database connection pooling for increased performance on large bots
  • Improved logging output
  • Admin panel will run with debug mode disabled by default
  • Unified management of views and modals

Enhancements

  • Command mentions will persist across package reloading
  • Unified and improved error management, providing meaningful messages in case of permissions issues
  • Missed interactions are now warnings instead of unhandled errors, reducing the verbosity of the console
  • Small chance of displaying πthon if you're running Python 3.14
  • Reworked player data export to only use db-side COPY TO, vastly speeding up the operation

Breaking changes

  • Ditched Tortoise ORM in favor of Django ORM
    • This unifies model definitions and enables more powerful queries
    • ALL existing evals and 3rd party packages WILL break from this change
  • Docker image no longer allows writing arbitrary files in the host (no more random txt files)
  • Custom spawn managers must support commands.Context instead of interactions