mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-18 23:15:48 +00:00
Add CommandTree.clear_commands
This commit is contained in:
parent
8a1800bd12
commit
83fae4f0fa
@ -409,6 +409,47 @@ class CommandTree(Generic[ClientT]):
|
||||
key = (command, guild_id, type.value)
|
||||
return self._context_menus.pop(key, None)
|
||||
|
||||
def clear_commands(self, *, guild: Optional[Snowflake], type: Optional[AppCommandType] = None) -> None:
|
||||
"""Clears all application commands from the tree.
|
||||
|
||||
This only removes the commands locally -- in order to sync the commands
|
||||
and remove them in the client, :meth:`sync` must be called.
|
||||
|
||||
Parameters
|
||||
-----------
|
||||
guild: Optional[:class:`~discord.abc.Snowflake`]
|
||||
The guild to remove the commands from. If ``None`` then it
|
||||
removes all global commands instead.
|
||||
type: :class:`~discord.AppCommandType`
|
||||
The type of command to clear. If not given or ``None`` then it removes all commands
|
||||
regardless of the type.
|
||||
"""
|
||||
|
||||
if type is None or type is AppCommandType.chat_input:
|
||||
if guild is None:
|
||||
self._global_commands.clear()
|
||||
else:
|
||||
try:
|
||||
commands = self._guild_commands[guild.id]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
commands.clear()
|
||||
|
||||
guild_id = None if guild is None else guild.id
|
||||
if type is None:
|
||||
self._context_menus = {
|
||||
(name, _guild_id, value): cmd
|
||||
for (name, _guild_id, value), cmd in self._context_menus.items()
|
||||
if _guild_id != guild_id
|
||||
}
|
||||
elif type in (AppCommandType.user, AppCommandType.message):
|
||||
self._context_menus = {
|
||||
(name, _guild_id, value): cmd
|
||||
for (name, _guild_id, value), cmd in self._context_menus.items()
|
||||
if _guild_id != guild_id or value != type.value
|
||||
}
|
||||
|
||||
@overload
|
||||
def get_command(
|
||||
self,
|
||||
|
Loading…
x
Reference in New Issue
Block a user