🐛`295` Update :obj:`pydis_core.utils.regex.DISCORD_INVITE` to not be overly strict.
:feature:`282` Update :obj:`pydis_core.utils.regex.DISCORD_INVITE` to cover more edge cases.
:feature:`269` Update :obj:`pydis_core.utils.regex.DISCORD_INVITE` to also match backslash before the invite code.
🐛`-` Correct the docstring of :obj:`pydis_core.utils.interactions.ViewWithUserAndRoleCheck`.
:feature:`254` Add a
py.typed
file for :literal-url:`PEP 561 <https://peps.python.org/pep-0561/>` compliance.:support:`244` Bump Discord.py to :literal-url:`2.4.0 <https://github.com/Rapptz/discord.py/releases/tag/v2.4.0>`.
:support:`210` Drop the restriction that meant fakeredis could not be installed on Python 3.12 as lupa now supports 3.12
🐛`209` Extract original error from :obj:`discord.ext.commands.errors.CommandInvokeError` before handling it.
:breaking:`208` Split
fakeredis
optional dependency from theasync-rediscache
extra. You can now install with[fakeredis]
to just install fakeredis (with lua support),[async-rediscache]
to install justasync-rediscache
, or use either[all]
or[async-rediscache,fakeredis]
to install both. This allows users who do no rely on fakeredis to install in 3.12 environments.:support:`208` Add support for Python 3.12. Be aware, at time of writing, our usage of fakeredis does not currently support 3.12. This is due to :literal-url:`this lupa issue<https://github.com/scoder/lupa/issues/245>`. Lupa is required by async-rediscache for lua script support within fakeredis. As such, fakeredis can not be installed in a Python 3.12 environment.
:breaking:`208` Drop support for Python 3.10
:breaking:`208` Drop support for Pydantic 1.X
:support:`208` Bump ruff to 0.3.0 and target Python 3.11 now that 3.10 isn't supported.
:breaking:`207` Enable more ruff linting rules. See :literal-url:`GitHub release notes <https://github.com/python-discord/bot-core/releases/tag/v11.0.0>` for breaking changes.
:support:`206` Bump ruff from 0.1.15 to 0.2.2, using the new lint config namespace, and linting with the new rules.
:feature:`205` Add :obj:`pydis_core.utils.error_handling.commands.abc.AbstractCommandErrorHandler` and :obj:`pydis_core.utils.error_handling.commands.manager.CommandErrorManager` to implement and register command error handlers independantly.
:support:`204` Document the instance attributes of :obj:`pydis_core.BotBase`.
:feature:`158` Add locking utilities for controlling concurrency logic
:support:`202` Bump various development dependencies and CI workflow action versions
:feature:`194` Add the :obj:`pydis_core.utils.interactions.user_has_access` helper function, that returns whether the given user is in the allowed_users list, or has a role from allowed_roles.
:feature:`189` Add :obj:`pydis_core.utils.pagination.LinePaginator` which allows users to paginate over content using Embeds, with emoji reactions facilitating navigation.
:feature:`189` Add :obj:`pydis_core.utils.messages.reaction_check`, a predicate that dictates whether a user has the right to add a specific set of reactions based on certain criteria.
:feature:`199` Port common discord.commands checks from other bots to :obj:`pydis_core.utils.checks`.
🐛`200` Do not attempt to read response body if the HTTP response code is 204. Previously only :obj:`pydis_core.site_api.APIClient.delete` did this.
:support:`197` Mark dependencies using tilde version specifiers. This is to allow user of pydis core to use newer versions of these libraries without us having to cut a new release.
:support:`196` Bump aiodns to :literal-url:`3.1.1 <https://github.com/saghul/aiodns/releases/tag/v3.1.1>`.
:support:`196` Bump many development dependencies.
:feature:`195` Add log_format to pydis_core.utils.logging to allow for standardised logging across all services using pydis_core.
:feature:`195` Set discord, websockets, chardet & async_rediscache loggers to warning level and asyncio to info level by default.
:support:`192` Bump Discord.py to :literal-url:`2.3.2 <https://github.com/Rapptz/discord.py/releases/tag/v2.3.2>`.
:feature:`190` Overwrite :obj:`discord.ext.commands.Bot.process_commands` to ensure no commands are processed until all extensions are loaded. This only works for clients using :obj:`pydis_core.BotBase.load_extensions`.
:breaking:`188` Support sending multiple files at once to paste service. All calls to :obj:`pydis_core.utils.paste_service.send_to_paste_service` must now provide a list of :obj:`pydis_core.utils.paste_service.PasteFile`.
🐛`187 major` Fix :obj:`pydis_core.utils.channel.get_or_fetch_channel`'s return type to include :obj:`discord.abc.PrivateChannel` and :obj:`discord.Thread`.
:feature:`184` Remove the message stored in the
message
attr of :obj:`pydis_core.utils.interactions.ViewWithUserAndRoleCheck` when the interaction is stopped, in additional to the exist logic for timeout.:support:`184` Bump Discord.py to :literal-url:`2.3.1 <https://github.com/Rapptz/discord.py/releases/tag/v2.3.1>`.
🐛`185` Update expiry label from 1 month to 30 days in paste service.
🐛`183` Push the correct changeset to pypi.
:feature:`182` Default pastebin url to https://paste.pythondiscord.com.
:feature:`182` Add supported lexer validation to paste service.
:support:`181` Bump Discord.py to :literal-url:`2.3.0 <https://github.com/Rapptz/discord.py/releases/tag/v2.3.0>`.
:feature:`179` Add paste service utility to upload text to our paste service.
:feature:`177` Automatically handle discord.Forbidden 90001 errors in all schedules.
:feature:`176` Migrate repo to use ruff for linting.
:feature:`175` Log when waiting for the guild to be available before loading cogs.
:support:`175` Bump Discord.py to :literal-url:`2.2.3 <https://github.com/Rapptz/discord.py/releases/tag/v2.2.3>`.
🐛`174` Bump Discord.py to :literal-url:`2.2.2 <https://github.com/Rapptz/discord.py/releases/tag/v2.2.2>`.
:feature:`173` Bump Discord.py to :literal-url:`2.2.0 <https://github.com/Rapptz/discord.py/releases/tag/v2.2.0>`.
🐛`172` Bump Discord.py to :literal-url:`2.1.1 <https://github.com/Rapptz/discord.py/releases/tag/v2.1.1>`.
:feature:`171` Sync all app commands after extensions have been loaded. This release also removes the need to run :obj:`pydis_core.BotBase.load_extensions` in a task.
🐛`170` Save references of newly created tasks in :obj:`pydis_core.utils.scheduling`.
:feature:`169` Return :obj:`None` upon receiving a bad request from Discord in :obj:`pydis_core.utils.members.get_or_fetch_member`.
:support:`151` Add support for Python 3.11.
🐛`162` Handle not being able to delete the interaction message on button press/timeout.
:feature:`158` Bump Discord.py to :literal-url:`2.1.0 <https://github.com/Rapptz/discord.py/releases/tag/v2.1.0>`.
:feature:`88` Add a decorator that stops successive duplicate invocations of commands.
:breaking:`157` Rename project to pydis_core to allow for publishing to pypi.
🐛`138` Bump Discord.py to :literal-url:`2.0.1 <https://discordpy.readthedocs.io/en/latest/whats_new.html#v2-0-1>`.
:support:`125` Bump Discord.py to the stable :literal-url:`2.0 release <https://discordpy.readthedocs.io/en/latest/migrating.html>`.
:support:`124` Updated :obj:`pydis_core.utils.regex.DISCORD_INVITE` regex to optionally match leading "http[s]" and "www".
:breaking:`110` Bump async-rediscache to v1.0.0-rc2.
:support:`108` Bump Python version to 3.10.*.
🐛`107 major` Declare aiodns as a project dependency.
:support:`107` Add a sample project with boilerplate and documentation explaining how to develop for bot-core.
:feature:`101` Add a utility to clean a string or referenced message's content.
:feature:`106` Add an optional
message
attr to :obj:`pydis_core.utils.interactions.ViewWithUserAndRoleCheck`. On view timeout, this message has its view removed if set.🐛`104` Fix :obj:`pydis_core.utils.interactions.DeleteMessageButton` not working due to using wrong delete method.
:feature:`103` Add a generic view :obj:`pydis_core.utils.interactions.ViewWithUserAndRoleCheck` that only allows specified users and roles to interaction with it.
:feature:`103` Add a button :obj:`pydis_core.utils.interactions.DeleteMessageButton` that deletes the message attached to its parent view.
🐛`98` Only close
BotBase.stats._transport
ifBotBase.stats
was created.🐛`96` Fix attempts to connect to
BotBase.statsd_url
when it is None.🐛`91` Fix incorrect docstring for
pydis_core.utils.member.handle_role_change
.🐛`91` Pass missing self parameter to
BotBase.ping_services
.🐛`91` Add missing await to
BotBase.ping_services
in some cases.:support:`93` Bump Discord.py to :literal-url:`0eb3d26 <https://github.com/Rapptz/discord.py/commit/0eb3d26343969a25ffc43ba72eca42538d2e7e7a>`:
- Adds support for auto mod, of which the new auto_mod MESSAGE_TYPE is needed for our filter system.
:support:`79` Add sphinx-multiversion to make available older doc versions.
:support:`79` Restore on-site changelog.
:feature:`78` Bump Discord.py to :literal-url:`4cbe8f5 <https://github.com/Rapptz/discord.py/tree/4cbe8f58e16f6a76371ce45a69e0832130d6d24f>`:
- This fixes a bug with permission resolution when dealing with timed out members.
🐛`75 major` Capture all characters up to a whitespace in the Discord Invite regex.
:breaking:`75` Discord invite regex no longer returns a URL safe result, refer to documentation for safely handling it.
:feature:`72` Bump discord.py to :literal-url:`5a06fa5 <https://github.com/Rapptz/discord.py/tree/5a06fa5f3e28d2b7191722e1a84c541560008aea>`:
- Notably, one of the commits in this bump dynamically extends the timeout of
Guild.chunk()
based on the number or members, so it should actually work on our guild now.
- Notably, one of the commits in this bump dynamically extends the timeout of
🐛`69` Actually use
statsd_url
when it gets passed toBotBase
.🐛`68` Correct version number in pyproject.toml.
:feature:`-` (Committed directly to main) Don't load modules starting with
_
.:feature:`66` Load each cog in it's own task to avoid a single cog crashing entire load process.
:feature:`65` Add
unqualify
to thepydis_core.utils
namespace for use in bots that manipulate extensions.:breaking:`64` Bump discord.py to :literal-url:`987235d <https://github.com/Rapptz/discord.py/tree/987235d5649e7c2b1a927637bab6547244ecb2cf>`:
- This reverts a change to help command behaviour that broke our custom pagination.
- This also adds basic forum channel support to discord.py.
:release:`5.0.4 <18th April 2022>` 63
:feature:`63` Allow passing an
api_client
toBotBase.__init__
to specify thepydis_core.site_api.APIClient
instance to use.🐛`61` Reconnect to redis session on setup if it is closed.
🐛`56` Create a dummy
AsyncstatsdClient
before connecting to real url, in case a connection cannot be made on init.🐛`56` Move the creation of the
asyncio.Event
,BotBase._guild_available
to within the setup hook, to avoid a deprecation notice.🐛`54` Move creation of BotBase's
aiohttp.AsyncResolver
to the async setup hook, to avoid deprecation notice.:breaking:`42` Remove public extensions util.
:feature:`42` Add
BotBase
, adiscord.ext.commands.Bot
sub-class, which abstracts a lot of logic shared between our bots.:feature:`42` Add async statsd client.
:support:`42` Bump Discord.py to latest alpha commit.
:breaking:`39` Migrate back to Discord.py 2.0.
🐛`37` Setup log tracing when
pydis_core.utils.logging
is imported so that it can be used within pydis_core functions.:breaking:`35` Move
apply_monkey_patches()
directly to pydis_core.utils namespace.:feature:`34` Port the Site API wrapper from the bot repo.
:breaking:`35` Moved regex to
pydis_core.utils
namespace.:breaking:`32` Migrate from discord.py 2.0a0 to disnake.
:feature:`32` Add common monkey patches.
:feature:`29` Port many common utilities from our bots:
- caching
- channel
- extensions
- loggers
- members
- scheduling
:support:`2` Added intersphinx to docs.
:feature:`12` Code block detection regex.
:support:`2` Autogenerated docs.
:feature:`2` Regex utility.
:feature:`1` Core package, poetry, and linting CI.