Я пытаюсь встроить сообщение с помощью кнопок. Для системы поддержки, но я получаю Неизвестную ошибку взаимодействия. Я добавил ephemeral=True, чтобы отложить.
Также изменил это:
interaction.response.send_messageк этому interaction.followup.send()
embed = discord.Embed(
title = "Are You Looking For Help?",
description = "Use buttons man.",
color=discord.Colour.blurple(),
)
class MyView(discord.ui.View):
@discord.ui.button(label = "Open Ticket", style=discord.ButtonStyle.primary, emoji = "😎")
async def button_callback(self, interaction: discord.Interaction, _):
await interaction.followup.send("You clicked the button!")
@bot.slash_command(name = "support")
async def support(ctx):
await ctx.defer(ephemeral=True)
view = MyView()
await ctx.response.send_message(embed=embed, view=view)
bot.run("token")
Ошибка:
C:\Users\playe\PycharmProjects\pythonProject\.venv\Scripts\python.exe "C:\Users\playe\PycharmProjects\Minecraft Player Bot\main.py"
Lolo RS's Main#6223
Ignoring exception in command support:
Traceback (most recent call last):
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\commands\core.py", line 131, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\commands\core.py", line 1013, in _invoke
await self.callback(ctx, **kwargs)
File "C:\Users\playe\PycharmProjects\Minecraft Player Bot\main.py", line 35, in support
await ctx.defer(ephemeral=True)
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\interactions.py", line 748, in defer
await self._locked_response(
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\interactions.py", line 1243, in _locked_response
await coro
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\webhook\async_.py", line 220, in request
raise NotFound(response, data)
discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\bot.py", line 1130, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\commands\core.py", line 376, in invoke
await injected(ctx)
File "C:\Users\playe\PycharmProjects\pythonProject\.venv\Lib\site-packages\discord\commands\core.py", line 139, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: NotFound: 404 Not Found (error code: 10062): Unknown interactio
н






Обновлено: Основываясь на дополнительной информации, я бы сказал, что проблема также периодически возникает из-за медленного подключения к Интернету и разногласий с компьютером, на котором работает ваш бот. Это означает, что после получения взаимодействия на вашем компьютере время ожидания взаимодействия уже истекло просто потому, что оно не пришло к вам достаточно быстро.
Тот факт, что взаимодействие не обнаружено, означает, что, когда ваш код ответил на него, Discord уже удалил его из своей системы, потому что вам нужно ответить на него примерно через 3 секунды. Выполнение ctx.defer() также считается реакцией на взаимодействие.
Проблема, с которой вы столкнулись, похоже, связана с множеством мелких ошибок в обработке взаимодействий в библиотеке pycord. Если вы хотите сразу приступить к делу, ниже у вас есть мой рабочий код, но вот несколько объяснений ваших ошибок и того, как я их исправил:
Смешиваем discord.Interaction и discord.ApplicationContext:
Кнопки и другие элементы и функции пользовательского интерфейса возвращают первое, а второе — команду косой черты. На самом деле ApplicationContext является оберткой вокруг Interaction. В вашей команде слэша вы вызываете ctx.response.send_message, но на самом деле выполнение ctx.respond является правильным, поскольку все обрабатывается библиотекой.
Неправильный порядок параметров в обратном вызове кнопки. По спецификации обратный вызов должен иметь следующие параметры по порядку: self, button: discord.Button (сама кнопка), interaction: discord.Interaction (взаимодействие). Однако вы ставите взаимодействие на первое место.
Вызов interaction.followup.send() вместо interaction.respond() или response.send_message(): это взаимодействие отличается от того, которое вы имели с компонентом кнопки, и на него никогда раньше не реагировали. Метод .respond — это быстрый способ сделать правильный шаг, не беспокоясь о том, что вам придется об этом думать. Кроме того, вы дважды использовали interaction.followup.send()(message) в круглых скобках, чего не должно быть.
embed = discord.Embed(
title = "Are You Looking For Help?",
description = "Use buttons man.",
color=discord.Colour.blurple(),
)
class MyView(discord.ui.View):
@discord.ui.button(label = "Open Ticket", style=discord.ButtonStyle.primary, emoji = "😎")
async def button_callback(self, button: discord.Button, interaction: discord.Interaction):
await interaction.response.defer(ephemeral=True)
await interaction.respond("You clicked the button!", ephemeral=True)
@bot.slash_command(name = "support")
async def support(ctx: discord.ApplicationContext):
await ctx.defer(ephemeral=True)
view = MyView()
await ctx.respond(embed=embed, view=view)
Дайте мне знать, если что-то неясно в комментарии, и я постараюсь отредактировать свой ответ.
@Rstarsk Не могли бы вы отредактировать свой вопрос со всей трассировкой ошибок Python с моим обновленным кодом? Кроме того, круглые скобки — не единственная проблема, а лишь одна из проблем. –
@Rstarks Ошибка возникает всегда, например, каждый раз, когда вы запускаете команду, или иногда она меняется/исчезает?
[cdn.discordapp.com/attachments/1072900585994584146/… пытается) Я нажал 3 раза, чтобы получить Вы нажали кнопку.
@Rstarks Я отредактировал свой ответ.
во-первых, после нескольких попыток вставки сообщения выдается ошибка. Но иногда я получаю ошибки. discord.errors.NotFound: 404 не найден (код ошибки: 10062): неизвестное взаимодействие discord.errors.ApplicationCommandInvokeError: команда приложения вызвала исключение: NotFound: 404 не найдено (код ошибки: 10062): неизвестное взаимодействие Кстати, у вас есть разногласия ?
Да, как я уже сказал в своем отредактированном ответе, это связано с плохим подключением к Интернету и дискордом. Вы можете прочитать мой ответ выше, чтобы узнать больше об этом.
Можно ли что-нибудь сделать при плохом соединении?
@Rstarks Во-первых, я снова отредактировал код своего ответа, добавив еще одну отсрочку, чтобы свести к минимуму возможные проблемы. В зависимости от того, где вы планируете запустить своего бота, если вы планируете запустить его на сервере где-то еще, его подключение к Интернету должно быть более чем хорошим. Между тем, при разработке вам, возможно, придется запустить команду пару раз.
Могу ли я, случайно, принять ваше несогласие за мелкие вопросы?
конечно, это @paillat
взаимодействия.followup.send()(сообщение) с двойными круглыми скобками, чего не должно быть. Я сделал это с помощью копирования и вставки, поэтому в реальном коде есть только одни скобки. Я попробовал ваш код, но иногда получаю ту же ошибку. Я не понимал, почему у меня иногда возникают ошибки. Еще один вопрос, что вы изменили, там написано: Discord.errors.NotFound: 404 Not Found (код ошибки: 10062): Неизвестное взаимодействие.