Skip to content

Releases: Kenny2github/discord-ext-slash

1.0.0b3

16 Jan 07:31
ebd157a
Compare
Choose a tag to compare
1.0.0b3 Pre-release
Pre-release

Changes

  • BaseContext.respond now has slightly different semantics:
    • Passing a value of None as an argument leads to that parameter not being sent to the API. This has always been the case for all parameters except content, which used to cast the None to a string.
    • Passing a falsy value that is not None (e.g. embeds=[]) now sends the empty value to the API. You are responsible for making sure that at least one value is not empty (client-side validation only ensures one is passed).

Fixes

  • Calls of the form BaseContext.respond(embed=...) (i.e. only embed is passed) work again now.
  • Multiple responses to the same interaction now actually edits the response again.

1.0.0b2

12 Jan 13:30
275903e
Compare
Choose a tag to compare
1.0.0b2 Pre-release
Pre-release

Fixes

  • Commands in DMs were still potentially failing. This should fix it.

1.0.0b1

12 Jan 13:28
63e3cbf
Compare
Choose a tag to compare
1.0.0b1 Pre-release
Pre-release

New Stuff

  • Message components! See the demo bot for an example, because it's 8:25 AM, I haven't slept, and I'm not listing all of the classes that got added.

Breaking Changes

  • InteractionCallbackType enum names are now CONSTANT_CASE only; the CamelCase aliases have been removed.

Potentially Breaking Changes

  • InteractionResponseType is renamed to InteractionCallbackType following API docs renaming. The old name remains as an alias, but it will not be imported in a from discord.ext.slash import * context so code that uses both that import and the old name will fail with a NameError.
  • Context.author can now be a discord.User instead of a discord.Member if the command is run in DMs.

0.9.2

04 Jan 06:36
3aab38a
Compare
Choose a tag to compare

Fixes

  • Fixed slash.Context callback annotations not being properly evaluated from string annotations under from __future__ import annotations.
  • Fixed guild-specific commands trying to register their default permissions in all guilds. They only register them in their own guild now.

0.9.1

01 Jan 06:34
a207fc6
Compare
Choose a tag to compare

New Stuff

  • on_(before|after)_slash_command_invoke events. See the docs

0.9.0

19 Dec 07:49
Compare
Choose a tag to compare

New Stuff

0.8.1

30 Aug 06:42
Compare
Choose a tag to compare

Removed Stuff

  • Command.default and Group.default were never implemented and are now no longer documented. Goodbye.

Fixes

  • CallbackFlags is now IntFlag, instead of IntEnum.

0.8.0

29 Jul 19:44
Compare
Choose a tag to compare

New Stuff

  • ApplicationCommandOptionType.MENTIONABLE works effectively as a union of USER and ROLE; the logic will attempt to resolve MENTIONABLE IDs as users first, then as roles.
  • ApplicationCommandOptionType.NUMBER is the float analog of INTEGER

Breaking Changes

  • InteractionResponseType.Acknowledge and InteractionResponseType.ChannelMessage are now fully removed from the library.

Potentially Breaking Changes

  • MessageFlags is renamed to CallbackFlags following API docs renaming. The old name remains as an alias, but it will not be imported in a from discord.ext.slash import * context so code that uses both that import and the old name will fail with a NameError.
  • All MessageFlags that were read-only are now gone in CallbackFlags. CallbackFlags.EPHEMERAL is currently the only enum of that type.

Changes

  • Remaining InteractionResponseType enum names are now listed in API docs in CONSTANT_CASE, so the enums gain these as aliases.

0.7.0

17 May 17:37
Compare
Choose a tag to compare

New Stuff

Permissions! #5 discord/discord-api-docs#2737 Documentation coming soon, but here's an overview:

  • New attribute: Command.default_permission (settable in kwargs) determines whether the command is enabled for all users by default.
  • New method: Command.add_perm is probably the main mechanism for setting permissions. add_perm(target, perm) infers the target guild ID and type of target from the target.guild.id and isinstance(target, ...) respectively; add_perm(target, perm, None) sets the perm as the default for all guilds; add_perm(discord.Object(id), perm, guild, type) lets you set the perm by ID alone, but you have to provide guild and type information.
  • New method: SlashBot.register_permissions registers locally set permissions with the API. Calling with a guild ID will set permissions for that guild (which can span commands outside it).
  • New event: on_slash_permissions is dispatched once immediately after the initial register_commands and by default just calls register_permissions. Override this with @client.event and use add_perm to register permissions before finally calling register_permissions at the end of the event handler to set permissions dynamically.
  • New decorator: @slash.permit is a shortcut to Command.add_perm. Probably best used with static things like owner IDs.
  • New attribute: Command.permissions is a CommandPermissionsDict that keeps track of all permissions for this command.
  • New enum: ApplicationCommandPermissionType indicates role or user permissions.

Changes

  • /names in demo_bot.py uses an embed in an ephemeral response to show that they can be used there now.
  • /stop in same file uses on_slash_permissions and add_perm to demonstrate them, replacing the check_owner check.

Fixes

  • PartialObject is annotated as having a guild attribute that is a discord.Object.
  • SlashBot is annotated as having its slash: Set[Command] attribute.

0.6.2

28 Apr 09:53
Compare
Choose a tag to compare

Fixes

  • Fixed an edge case where removing all commands from a guild in code would not do the same on the API, causing ghost commands that would fail with a command-not-found error.