У меня возникла проблема: несколько дней назад все работало нормально, но внезапно любая обработка ошибок заняла слишком много времени, чтобы уложиться в 3-секундный интервал для обработки ответа. Ничего не произойдет в течение примерно 5 секунд после возникновения ошибки, а затем происходит ошибка, потому что истекло время взаимодействия, с которым мой код пытается взаимодействовать.
Также по какой-то причине в консоли выводятся оба KeyError (который на самом деле перехватывается) и CheckFailure появится в списке, что обычно не имеет никакого смысла. В поисках ответов я обнаружил, что у кого-то была похожая проблема и что это связано с тем, как discord.py работает с asyncio. Хотя в этом не уверен.
before except 2024-07-23 13:22:58.977088
except clause 2024-07-23 13:23:07.315731
error handling 2024-07-23 13:23:07.315731
Task exception was never retrieved
future:
Traceback (most recent call last):
File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\cogs\trickjump.py", line 29, in give
jump = JUMPS.get()[jump_name]
~~~~~~~~~~~^^^^^^^^^^^
File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\utils\trickjump.py", line 160, in __getitem__
raise KeyError(f"Key '{key}' not found.")
KeyError: "Key 'a' not found."
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1310, in _call
await command._invoke_with_namespace(interaction, namespace)
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\commands.py", line 883, in _invoke_with_namespace
return await self._do_call(interaction, transformed_values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\commands.py", line 857, in _do_call
return await self._callback(self.binding, interaction, **params) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\cogs\trickjump.py", line 32, in give
raise app_commands.CheckFailure
discord.app_commands.errors.CheckFailure
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1151, in wrapper
await self._call(interaction)
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1314, in _call
await self.on_error(interaction, e)
File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\running.py", line 47, in on_app_command_error
await interaction.response.defer()
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\interactions.py", line 709, in defer
await adapter.create_interaction_response(
File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\webhook\async_.py", line 221, in request
raise NotFound(response, data)
discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction
Я работаю на локальном компьютере, но пробовал использовать несколько разных сетей, пробовал переустановить discord.py, пробовал несколько типов ошибок, а также несколько способов их обработки, но нет результатов.
У меня возникла проблема: несколько дней назад все работало нормально, но внезапно любая обработка ошибок заняла слишком много времени, чтобы уложиться в 3-секундный интервал для обработки ответа. Ничего не произойдет в течение примерно 5 секунд после возникновения ошибки, а затем происходит ошибка, потому что истекло время взаимодействия, с которым мой код пытается взаимодействовать. Также по какой-то причине в консоли выводятся оба KeyError (который на самом деле перехватывается) и CheckFailure появится в списке, что обычно не имеет никакого смысла. В поисках ответов я обнаружил, что у кого-то была похожая проблема и что это связано с тем, как discord.py работает с asyncio. Хотя в этом не уверен. [code]running.py[/code] [code]import discord from discord import app_commands, Interaction from discord.ext import commands from discord.ext.commands import Context, CommandError
import os import traceback
from bot import bot from utils import errors from utils.constants import SECRET_DB
if isinstance(error, app_commands.CommandInvokeError): e = error.original else: e = error
if not interaction.response.is_done(): await interaction.response.defer()
if isinstance(e, errors.UserReturnableError): await interaction.followup.send(str(e), **e.msg_kwargs) return
await interaction.followup.send("Unhandled Exception!") raise e
bot.run(TOKEN) [/code] [code]trickjump.py[/code] [code]import discord from discord import app_commands, Interaction from discord.ext import commands from discord.ext.commands import Bot, Cog import validators
from typing import Optional import textwrap
from utils import retrieve, usertools from utils.constants import * from utils.errors import FeedbackErrors from utils.filtered import filtered from utils.trickjump import Base, Trickjump
class Trickjump_(Cog): def __init__(self, bot: Bot): self.bot = bot
trickjump_group = app_commands.Group(name='trickjump', description="Command group to manage trickjumps of users")
@trickjump_group.command(name="give", description="Give a jump to a user") async def give(self, interaction: Interaction, jump_name: str, proof: Optional[str] = None, user: Optional[str] = None): from datetime import datetime print("before except", datetime.now()) try: jump = JUMPS.get()[jump_name] except KeyError: print("except clause", datetime.now()) raise app_commands.CheckFailure
jump.remove_attrs(filtered( lambda attr, rs: rs['for_user'] is False, ATTRIBUTES ))
[/code] [code]Output[/code] [code]before except 2024-07-23 13:22:58.977088 except clause 2024-07-23 13:23:07.315731 error handling 2024-07-23 13:23:07.315731 Task exception was never retrieved future: Traceback (most recent call last): File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\cogs\trickjump.py", line 29, in give jump = JUMPS.get()[jump_name] ~~~~~~~~~~~^^^^^^^^^^^ File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\utils\trickjump.py", line 160, in __getitem__ raise KeyError(f"Key '{key}' not found.") KeyError: "Key 'a' not found."
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1310, in _call await command._invoke_with_namespace(interaction, namespace) File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\commands.py", line 883, in _invoke_with_namespace return await self._do_call(interaction, transformed_values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\commands.py", line 857, in _do_call return await self._callback(self.binding, interaction, **params) # type: ignore ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\cogs\trickjump.py", line 32, in give raise app_commands.CheckFailure discord.app_commands.errors.CheckFailure
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1151, in wrapper await self._call(interaction) File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\app_commands\tree.py", line 1314, in _call await self.on_error(interaction, e) File "c:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\running.py", line 47, in on_app_command_error await interaction.response.defer() File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\interactions.py", line 709, in defer await adapter.create_interaction_response( File "C:\Users\JoniK\OneDrive\Dokumente\Schule\Off-School\Programmieren\Python\Jumpedia\Jumpedia\src\.venv\Lib\site-packages\discord\webhook\async_.py", line 221, in request raise NotFound(response, data) discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction [/code] Я работаю на локальном компьютере, но пробовал использовать несколько разных сетей, пробовал переустановить discord.py, пробовал несколько типов ошибок, а также несколько способов их обработки, но нет результатов.