[RedTree] add UserFeedbackCheckFailure for app_commands (#6397)

Co-authored-by: Jakub Kuczys <me@jacken.men>
This commit is contained in:
Lemon Rose 2024-07-12 23:00:22 +05:30 committed by GitHub
parent 2e40ec4a1a
commit bf8c0d03b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 37 additions and 0 deletions

2
.github/labeler.yml vendored
View File

@ -141,6 +141,8 @@
"Category: Core - API - App Commands Package":
# Source
- redbot/core/app_commands/*
# Docs
- docs/framework_app_commands.rst
# Tests
- tests/core/test_app_commands.py
"Category: Core - API - Commands Package":

View File

@ -0,0 +1,13 @@
.. red app_commands module documentation
====================
App Commands Package
====================
This package acts almost identically to :doc:`discord.ext.app_commands <dpy:interactions/api>`; i.e.
all of the attributes from discord.py's are also in ours.
Some of these attributes, however, have been slightly modified, while others have been added to
extend functionalities used throughout the bot, as outlined below.
.. autoclass:: redbot.core.app_commands.UserFeedbackCheckFailure
:members:

View File

@ -47,6 +47,9 @@ extend functionalities used throughout the bot, as outlined below.
.. autoclass:: redbot.core.commands.DMContext
.. autoclass:: redbot.core.commands.UserFeedbackCheckFailure
:members:
.. automodule:: redbot.core.commands.requires
:members: PrivilegeLevel, PermState, Requires

View File

@ -71,6 +71,7 @@ Welcome to Red - Discord Bot's documentation!
framework_bot
framework_checks
framework_commands
framework_app_commands
framework_config
framework_datamanager
framework_events

View File

@ -69,6 +69,9 @@ from discord.app_commands import (
)
from . import checks as checks
from .errors import (
UserFeedbackCheckFailure as UserFeedbackCheckFailure,
)
__all__ = (
"AllChannels",
@ -131,4 +134,5 @@ __all__ = (
"rename",
"user_install",
"checks",
"UserFeedbackCheckFailure",
)

View File

@ -0,0 +1,10 @@
"""Errors module for the app_commands package."""
from discord import app_commands
class UserFeedbackCheckFailure(app_commands.CheckFailure):
"""A version of CheckFailure responding with a custom error message."""
def __init__(self, message=None, *args):
self.message = message
super().__init__(message, *args)

View File

@ -17,6 +17,7 @@ from .app_commands import (
Group,
NoPrivateMessage,
TransformerError,
UserFeedbackCheckFailure,
)
from .i18n import Translator
from .utils.chat_formatting import humanize_list, inline
@ -327,6 +328,9 @@ class RedTree(CommandTree):
relative_time=relative_time
)
await self._send_from_interaction(interaction, msg, delete_after=error.retry_after)
elif isinstance(error, UserFeedbackCheckFailure):
if error.message:
await self._send_from_interaction(interaction, error.message)
elif isinstance(error, CheckFailure):
await self._send_from_interaction(
interaction, _("You are not permitted to use this command.")