Warning
This update contains DB changes, it's recommended to update to version 3.6.x first, drop table
aerich
from your database, deletemigrations
folder, run the bot to initialize aerich, then you can finally update to version 3.7.x.
- [Fixed]
>colour
command always return incorrect value - [Added] Add loot table choice to
>barter
command - [Added] Add
>findblock
command
- [Added] Add
ClampedRange
to revert some command's old range behaviour - [Changed] Updated
discord.py
to 2.4.0
- [Added] Implemented i18n using Project Fluent
- [Changed] Updated
discord.py
to 2.3.1, it's now support Discord's latest stupid decision™! (Username)
- [Added]
Users
table model - [Added] Add
locale
column/field toGuildConfigs
table model - [Changed] RandomAPI is merged with Nexus
Note
Version 3.6.x is mostly about refactoring the project structure since previously functions and constants are all over the place that it's starting to get harder to find what I'm looking for.
- [Fixed]
shutil.rmtree
cause OSError in Docker environment
Note
Starting at v3.6.2,
aerich
will be handled automatically. It's recommended to dropaerich
table from your database before running the bot.For Docker users it's recommended to add
./migrations:/app/migrations
to your docker-compose's volumes list.
- [Removed] Flake8 no longer used for linting, pyright will handle this job instead
- [Added] Database Migration with
aerich
- [Added] Database Data Migration
- [Changed] Rename
utils/other.py
toutils/__init__.py
- [Changed] Move
GreetingFlag
intoadmin._flags
- [Fixed] Fixed issues related to
import tse
- [Fixed] Aerich caused the bot to crash in production environment
- [Fixed] Fixed potential error related to user without avatar
- [Fixed]
>findseed
command throws error when invalid mode is given instead of falling back tovisual
- [Fixed] Error while changing changelog caused by unhandled parent directories
- [Fixed] Prefix list no longer being sent when bot is mentioned
- [Fixed] Some command doesn't show its full description in Help Page
- [Added] Add
{args}
tag block
- [Improved] Docker ignores
src/test
- [Improved] Docker no longer install development tools
- [Improved] Moved tseBlocks into TagScript module (
src/tse
) - [Improved] Moved command usage tips from footer to a new field
- [Added] Unit testing the bot using dpytest
- [Improved] Initial Python v3.11 support
- [Changed] Merge TagScript into Z3R0 repository
- [Improved] Split
_model
into_wrapper
and_custom_command
- [Improved] Moved Custom Command related errors into
exts.meta._errors
- [Improved] Moved JSON (and Blacklist) and Cache (and its properties) into
core.data
- [Changed] Removed
CMDName
- [Added] Initial ZeroMQ support for Dashboard
- [Improved]
ccModeCheck
is now an actual check (hasCCPriviledge
) - [Improved] CustomCommand is now a converter
- [Fixed] Prefixes is not loaded properly
- [Fixed] Assets is missing for docker setup
- [Fixed] Guild only (slash) commands is registered to DMs
- [Fixed] Duration parser stopped working
- [Fixed]
1 spam
is parsed as 1 seconds - [Fixed]
>mute set
command stopped working
- [Changed] Rename some command (only affecting for slash)
- [Improved] Use SQLite by default when DB_URL is not specified
- [Changed] Turn monkeypatches into wrapper classes to clean up the codebase
- [Improved] Add
__init__.py
file to clean up the codebase - [Fixed] Updated
discord.py
to v2.1.1 to fix GIF sticker support - [Fixed] Added missing license headers
- [Fixed] Fixed some subcommands ignore parent's checks
Warning
THIS UPDATE (
3.4.x
->3.5.x
) CONTAINS BREAKING CHANGES!This update is mostly just migration to stable discord.py v2.0 after discord.py development is continued.
Most changes are on the code side, so it shouldn't affect users that much, other than the addition of application commands (orslash
).Starting from 3.5 ziBot will only support Python 3.10+
- [Fixed] Re-enabled meme command, fixed by itself (probably aiohttp's user-agent bug)
- [Added] Application Commands (
slash
commands and more)
Some commands will be added on later version - [Improved] You can now set Welcome and Farewell message using Modal
- [Re-added] Re-added google search command
- [Added] Handle timed_out to be logged on modlog
- [Improved / BREAKING CHANGES] Changed project structure (all source file now located
- in
src/
)
This change breaks tortoise from loading, please change your models value fromcore.db
intosrc.main.core.db
! - [Improved] Versioning now only handled by pyproject
- [Fixed] Adapted discord.py's asyncio changes
- [Changed] Splitting meta into several subcogs
- [Fixed] Dpy 2.0 remove asynciterator's flatten function
- [Fixed] Discord paginate ban list
- [Added] Added support for hybrid commands
- [Improved] Moved
_custom_command
functions into_model.CustomCommand
- [Added] Added Docker/Podman support
- [Added] Added Environment Variable support for Docker
- [Improved] Problematic commands like google search can now be hosted using ZiRO-Bot/RandomAPI
getGuildPrefix
->discord.Guild.getPrefixes
addPrefix
->discord.Guild.addPrefix
rmPrefix
->discord.Guild.rmPrefix
- [Fixed] Fixed NSFW commands (
nekos.life
NSFW endpoints is dead)
- [Fixed] Getting 0 no longer possible on normal dice roll
- [Fixed] Fixed
AttributeError
trying to unmute a member that already left the server - [Fixed] Fixed
IndexError
trying to get a AuditLog when AuditLogs is empty - [Removed] Removed
ClientOSError
from log - [Removed] Removed prettify.py/pretty, too buggy
- [Fixed] Fixed custom command deletion when guild deletion event dispatched
- [Fixed] Suppressed discord.Forbidden when bot can't access AuditLog
- [Fixed] Fixed
Invalid Form Body
when trying to send empty message content to purgatory
- [Fixed] Fixed command list always show 1 command
- [Fixed] Fixed
getAuditLogs
- [Fixed] Added missing file to git repo (
timer/_views.py
) - [Fixed] Fixed "not in the list" error when it's not supposed to do that
- [Improved] Z3R0 now supports hosting using PostgreSQL or MySQL database via Tortoise, migration required!
- [New] Re-added channel mention to purgatory
- [Fixed] Fix command names being escaped when its not supposed to be escaped
- [Improved] More typehinting
- [Fixed] Handle invalid time (something like
10000 years
)
- [Fixed] Fixed
List is empty!
error not being handled
- [Fixed] Fixed NSFW check always returns False
- [Fixed] Fixed
AttributeError
when user try to ban@everyone
- [Improved] IsAprilFool now raised DefaultError instead of
Check failed
- [Improved] IsRafael now raise SilentError instead of
Check failed
- [Improved] Added description to
>caselogs
command - [Improved] Help command now tell user when they have no usable commands
- [Fixed] Fixed
AttributeError
- [Fixed] Fixed
discord.Forbidden
in Error Handler
- [Improved] De-hardcoded news
- [New] Added realurl (get real url of a shorten url)
- [Improved] Added case number to modlog message
- [Changed] Rename
Bot.master
->Bot.owner_ids
- [Fixed] Fix Admin commands' checks not working properly
- [Improved] Decrease modlog delay to 2 seconds delay
- [Improved] Merged
>help filter: custom
with>command list
- [Changed]
>command disable
and>command enable
no longer uses flag, replaced with choice buttons when there's more than 1 type is found with identical name - [Fixed] Anilist commands now works in DMs
- [Fixed]
>manga search
actually search for manga not anime - [Improved] User now given choices between command and category when their names are conflicted
- [Improved] Custom command list now paginated
- [New] Added "compact mode" to paginator
- [Improved] Failed NSFW check will now properly "yell" at the executor, instead of yelling "Check failed!"
- [Fixed] Fixed caselog type
mute
being inconsistent ( [For self-hoster] sql query to fix your database:UPDATE OR IGNORE caseLog SET type='mute' WHERE type='muted'
) - [New] Added createdAt column to caselog ( [For self-hoster]: sql
query to add this column without dropping the table
ALTER TABLE caseLog ADD COLUMN createdAt INTEGER DEFAULT 0
) [NOTE]: Old cases' time will return either "Unknown" or1/1/1970
- [New] Added
caselogs
/cases
command to get moderator's cases - [Improved] Modlog now log unmute and unban
- [Disabled] Disable
google
command (blocking the whole bot)
- [Improved] Re-added alias
emote
toemoji
commands
- [Fixed] Fixed Moderation commands' checks not working properly
- [Fixed] Fixed help command not working in DMs
- [Changed] Use HTMLParser to convert HTML to Markdown instead of using RegEx
- [Fixed] Fixed modlog. Added 5 seconds delay, letting Audit Logs to update before sending modlog
- [Improved]
findanime
merged withanime
andmanga
asrandom
subcommand
- [New] Added ZView (
core/views.py
) - [New] Added
Context.loading
- [Fixed] Fixed anti-mute evasion
- [Improved] Merged
anime search
andmanga search
into 1 function - [Fixed] Fixed IndexError when there's no anime/manga found
- [Fixed] Fixed a lot of issue with v3.2.1
- [Improved] Updated
discord.py
(v1.7.3
->v2.0.0
) - [New] Re-added AniList category
- [New] Added ZMenuPagesView (ZMenu but using
discord.ui.View
instead of reactions) - [Changed] Replace most if not all ArgumentParser-based flags with discord.py's FlagConverter
- [Changed] Changed help command behaviour, filters now only works for
category (
>help info filters: custom built-in
will show custom commands first,>help info filters: custom
will only show custom commands) - [Improved] ZMenuPagesView's
_pageInfo
now acts like "Jump to" button - [Improved] Added "Read More" button to AniList
- [New] Added Caselog, to keep track of your moderation records
- [Improved] Added Info/Stats to Custom Command's help page
- [Improved] Disabled command will displayed
crossedon category commands' page (>help category
) - [Changed] Rename custom commands'
raw
->source
(butraw
stays as alias forsource
) - [Fixed] Fixed command disabler not working properly
- [Fixed] Fixed CheckFailure error handling
- [Improved] The bot now will tell you if you or the bot is missing some permissions
- [New] Re-added someone command (mimicking
@someone
April Fools command from discord) but only available on April Fools! - [New] Added anti mute evasion
- [Improved] Alongside anti mute evasion, newly binded/set mute role will merged with old mute rule (added automatically to muted members)
- [Changed] Splitted
>command set
and>command edit
(prevent accidentalset content
) - [New] Finally added functionality to
>command set category
- [New] Added Image category and re-added triggered
- [New] Added blurplify
- [Improved] Added
filters
flag to help command - [Improved]
>command set mode
success message now show mode's description - [New] Added redify and polaroid to Image category
- [Improved] Modlog events now getch the "real moderator" when mod commands is used to trigger the events
- [Changed] Added cooldown to most of the commands, to prevent spam
- [Improved] Added timezone argument to time command (user timezone still coming soon)
- [Improved] Use pre-commit to run isort and black before committing changes
- [Improved] Replace requirements.txt with poetry
- [Improved] Use flake8 (pyproject-flake8) and pyright
- [Fixed] Fix
CCommandNoPerm
not being handled by error handler
- [Fixed] Fix google search's safe search not working
- [Fixed] Fixed more issue with Google search throwing error when there's unsupported "special" results
- [Improved] Google search now supports Currency converter
- [New] Added cooldown for Google search to avoid abuse (1 per 10 seconds, per user)
- [Internal Change] Replace cse with google search web scrape (gives better result but have higher chance of breaking)
- [Fixed]
1m spam
parsed as1m s
andpam
instead of1m
andspam
- [Improved] You can now check required perms to execute a command inside help command
- [New] Added
>command mode
and>command modes
to check custom command current mode and all different modes for custom command
Note
A rewrite and a complete overhaul on the bot, biggest update so far. This update completely overhauled command system to integrate custom commands more seemlessly, it's not completely done but old stuff will be added back slowly in future updates.
- [Rename]
cogs/
->exts/
- [New] Command priority [0: Built-in, 1: Custom]
- [New] Use databases to handle SQL (Edit
exts/utils/dbQuery.py
if you're planning to use other SQL instead ofsqlite
!) - [Rename]
ziBot
->Z3R0
- [New] Mascot, named
Z3R0
- [Relicense]
GPL-3.0
->MPL-2.0
- [Fixed] Priority doesn't work on user-based input (string, int, etc)
- [New] "Colour Information" command
- [New]
Timer
ext - [Improved] Temporary ban using the new
Timer
ext - [Improved] Guild data will countdown up to 30 days before deleting when the bot leave the guild instead of instantly deleting the data
- [Improved] Prefixes now separated to custom and built-in/default (bot
mention and
>
by default) - [Changed] Split greeting, now its possible to have farewell and welcome message in separate channel
- [Improved]
>command disable
and>command enable
will now try to disable/enable built-in command by default if you're a guild moderator - [Improved] Changed POSIX-style flags
--channel #channel-mention
to Discord-style flagschannel: #channel-mention
, following dpy v2.0 flag behaviour - [Improved] Temporary mute using the new
Timer
ext - [Improved] Translate's destination language now adjustable instead of
hardcoded to
en
(source language are detectable, but you can specify it by writingja->id
) - [Improved] Behind the scene: Better roll dice handling