3.0.0
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.tomlfile 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 historyinterface, more info displayed, MUCH faster
Commands
- A lot of
/ballscommands should be much much faster for those with big inventories /balls duplicate,completionandcomparehave a reworked interface- Most
/playercommands were unified in a single/player settingscommand, 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)
- They can be used using slash commands (
- Admin roles are ditched, Django permissions are used for finer permission control across all server
- Static admin server configuration is ditched,
b.admin syncslashis used to register/adminon 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.logswill let you view the bot's most recent logs - Some log events may be sent to the configured webhook
- A new command
- Reworked
b.dbevalto 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
pagifysupports 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.Contextinstead of interactions