Пикорд Неизвестное взаимодействие

Я пытаюсь встроить сообщение с помощью кнопок. Для системы поддержки, но я получаю Неизвестную ошибку взаимодействия. Я добавил 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

н

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлено: Основываясь на дополнительной информации, я бы сказал, что проблема также периодически возникает из-за медленного подключения к Интернету и разногласий с компьютером, на котором работает ваш бот. Это означает, что после получения взаимодействия на вашем компьютере время ожидания взаимодействия уже истекло просто потому, что оно не пришло к вам достаточно быстро. Тот факт, что взаимодействие не обнаружено, означает, что, когда ваш код ответил на него, Discord уже удалил его из своей системы, потому что вам нужно ответить на него примерно через 3 секунды. Выполнение ctx.defer() также считается реакцией на взаимодействие.

Проблема, с которой вы столкнулись, похоже, связана с множеством мелких ошибок в обработке взаимодействий в библиотеке pycord. Если вы хотите сразу приступить к делу, ниже у вас есть мой рабочий код, но вот несколько объяснений ваших ошибок и того, как я их исправил:

  1. Смешиваем discord.Interaction и discord.ApplicationContext: Кнопки и другие элементы и функции пользовательского интерфейса возвращают первое, а второе — команду косой черты. На самом деле ApplicationContext является оберткой вокруг Interaction. В вашей команде слэша вы вызываете ctx.response.send_message, но на самом деле выполнение ctx.respond является правильным, поскольку все обрабатывается библиотекой.

  2. Неправильный порядок параметров в обратном вызове кнопки. По спецификации обратный вызов должен иметь следующие параметры по порядку: self, button: discord.Button (сама кнопка), interaction: discord.Interaction (взаимодействие). Однако вы ставите взаимодействие на первое место.

  3. Вызов 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)

Дайте мне знать, если что-то неясно в комментарии, и я постараюсь отредактировать свой ответ.

взаимодействия.followup.send()(сообщение) с двойными круглыми скобками, чего не должно быть. Я сделал это с помощью копирования и вставки, поэтому в реальном коде есть только одни скобки. Я попробовал ваш код, но иногда получаю ту же ошибку. Я не понимал, почему у меня иногда возникают ошибки. Еще один вопрос, что вы изменили, там написано: Discord.errors.NotFound: 404 Not Found (код ошибки: 10062): Неизвестное взаимодействие.

Rstarks 11.07.2024 22:31

@Rstarsk Не могли бы вы отредактировать свой вопрос со всей трассировкой ошибок Python с моим обновленным кодом? Кроме того, круглые скобки — не единственная проблема, а лишь одна из проблем. –

Paillat 11.07.2024 22:45

@Rstarks Ошибка возникает всегда, например, каждый раз, когда вы запускаете команду, или иногда она меняется/исчезает?

Paillat 11.07.2024 22:48

[cdn.discordapp.com/attachments/1072900585994584146/… пытается) Я нажал 3 раза, чтобы получить Вы нажали кнопку.

Rstarks 11.07.2024 22:56

@Rstarks Я отредактировал свой ответ.

Paillat 11.07.2024 23:02

во-первых, после нескольких попыток вставки сообщения выдается ошибка. Но иногда я получаю ошибки. discord.errors.NotFound: 404 не найден (код ошибки: 10062): неизвестное взаимодействие discord.errors.ApplicationCommandInvokeError: команда приложения вызвала исключение: NotFound: 404 не найдено (код ошибки: 10062): неизвестное взаимодействие Кстати, у вас есть разногласия ?

Rstarks 11.07.2024 23:06

Да, как я уже сказал в своем отредактированном ответе, это связано с плохим подключением к Интернету и дискордом. Вы можете прочитать мой ответ выше, чтобы узнать больше об этом.

Paillat 11.07.2024 23:09

Можно ли что-нибудь сделать при плохом соединении?

Rstarks 11.07.2024 23:15

@Rstarks Во-первых, я снова отредактировал код своего ответа, добавив еще одну отсрочку, чтобы свести к минимуму возможные проблемы. В зависимости от того, где вы планируете запустить своего бота, если вы планируете запустить его на сервере где-то еще, его подключение к Интернету должно быть более чем хорошим. Между тем, при разработке вам, возможно, придется запустить команду пару раз.

Paillat 11.07.2024 23:21

Могу ли я, случайно, принять ваше несогласие за мелкие вопросы?

Rstarks 11.07.2024 23:27

конечно, это @paillat

Paillat 11.07.2024 23:29

Другие вопросы по теме