Меню

Ошибка взаимодействия discord бот

Код делает то, что должен делать, но после каждого нажатия кнопки он говорит: «Это взаимодействие не удалось». Нажатие кнопки редактирует вставку, чтобы заменить ее на другую. Как мне избавиться от сообщения об ошибке взаимодействия после нажатия кнопки?

Проблема: https://i.stack.imgur.com/i4dTd.png

Код, полученный от: https://github.com/elixss/YouTube/ blob / main / source / buttons.py

Вот код:

@bot.group(invoke_without_command=True)
async def help(ctx):

    # buttons
    one = Button(style=1, label="Commands", id="em1")
    two = Button(style=1, label="Depression", id="em2")
    three = Button(style=1, label="Moderator", id="em3")
    four = Button(style=1, label="Language", id="em4")

    # embeds
    em1 = Embed(title="Commands Plugin",color=0x5865F2)
    em2 = Embed(title="Depression Plugin", description="placeholder", color=0x5865F2)
    em3 = Embed(title="Moderator Plugin", description="placeholder", color=0x5865F2)
    em4 = Embed(title="Language Plugin", description="placeholder", color=0x5865F2)

    # main help embed
    help_embed = Embed(description="> **Help Module**nPress on any button to view the commands for that selected plugin.",
                      color=discord.Color.random())

    # buttons to embeds
    buttons = {
        "em1": em1,
        "em2": em2,
        "em3": em3,
        "em4": em4
    }

    msg = await ctx.send(embed=help_embed,
                         components=[[one, two, three, four]])
    while True:
        event = await bot.wait_for("button_click", timeout=60.0)

        if event.channel is not ctx.channel:
            return

        if event.channel == ctx.channel:
            response = buttons.get(event.component.id)
            await msg.edit(embed=response)

            if response is None:
                await event.channel.send("error, try again.")

2 ответа

Лучший ответ

Как сказал Элиас, вы должны реагировать на взаимодействия, иначе будет отображаться сообщение «Это взаимодействие не удалось», но не с обычным ctx.send(), а с (в вашем случае)

await event.respond(type=4, message="Responded!")

Если вы не хотите отправлять сообщение в ответ на нажатие кнопки или выбор в выборе, вы можете просто использовать type=6 без сообщения:

await event.respond(type=6)

Дополнительные типы см. В документация.


1

Chuaat
6 Сен 2021 в 18:48

Лучший способ сделать это — либо удалить все кнопки после нажатия, либо добавить время восстановления, которое автоматически удалит кнопки через определенное время.

В вашей ситуации это будет выглядеть примерно так:

msg = await ctx.send(embed=help_embed, components=[[one, two, three, four]])
try: 
   res = await client.wait_for("button_click", timeout = 60)
except asyncio.TimeoutError:
   await msg.edit(components = []) #removes buttons from message
else:
   if res.author == message.author:
       #when button is clicked
       await msg.edit(components = [])

Это также предотвращает ограничение скорости, поэтому у вас нет кнопок, постоянно ожидающих ответа.


0

Larg Ank
7 Сен 2021 в 00:22

Create an account to follow your favorite communities and start taking part in conversations.

r/Discord_Bots

I get it with every single interactable button on my bot (they all work). Defer works but it’s not ideal with the annoying extra message sent.

level 1

if you are getting an error message, something is not working properly.

you should try to understand the error message (that you haven’t posted), and figure out what’s wrong

level 2

It’s the message you get when interacting with a discord component button. «This interaction failed» happens every single time on multiple buttons despite everything working as expected.

Which probably means it’s expecting a special response i haven’t given it to signal the interaction has worked, I’m not sure what that is. Deferring works to stop the message though.

level 1

Does your code receive it? The error appears if you do not respond to the interaction within 3 seconds. Defer does this job, for example. Others include stuff like interaction.response.pong or interaction.response.edit_message do these too.

Also note that discord-py is no longer maintained

level 2

Response isn’t a valid attribute. Respond is, but respond doesn’t have the attribute pong or edit_message.

Defer does work, but i don’t want to use it because of the message it sends.

level 1

Having the same issue. My buttons edit an embed and it does what I want it to do (edit the embed page) but every time I click one of the buttons, I get the «this interaction failed»

About Community

Subreddit Icon

Non-official subreddit for Discord bot developement



Дискорд – популярная бесплатная площадка для общения между пользователями. Программу используют те, кто играет в различные игры – дискорд позволяет корректировать действия и общаться в режиме реального времени, что очень удобно. Администрация на тематических серверах может устанавливать специальные музыкальные боты для трансляции музыки. По ряду причин, такие боты могут лагать и плохо работать на сервере. Чтобы наладить их функционирование, следует выполнить несколько простых действий.

Проблема с местоположением сервера

Проблема трансляции музыки с помощью бота в Дискорде связана с местоположением. По ряду причин из – за этого могут не транслироваться музыкальные композиции, или же болт вовсе перестанет работать. Исправляется это изменением местоположение сервера.

Если лагает музыкальный бот в дискорде, то причиной для этого может стать то, что программа автоматически выбирает точку подключения при создании сервера. Если она подключилась к той региональной точке, с которой создан сервер, то программа будет нормально функционировать. Но из – за возникающих сбоев программа может подключиться к другой региональной точке, из – за чего возникнет сильная задержка, из – за которой невозможно нормально смотреть видео или слушать музыку. Соответственно, это вредит и работе бота.

Сделать это можно, следуя этой инструкции:

  1. Войти в программу Дискорд.
  2. Открыть вкладку «Параметры».
  3. Выбрать «Настройки сервера».
  4. Перейти в «Обзор».
  5. Откроется окно со значок с флагом. Нужно выбрать функцию «Изменить».
  6. Откроется окно «Выберите регшион сервера». Пользователю придется выбрать из списка регион, где он находится.
  7. После этого нужно сохранить изменения.

Выполнив эти действия, у пользователя изменится местоположение сервера. Если местоположение изначально выбрано правильно, но музыкальный бот отказывается работать, некоторые пользователи советуют изменить местоположение. К примеру, сервер привязан к Росии по умолчанию, но его местоположение нужно изменить на США. После этого бот будет нормально функционировать.

Лагает сам бот — пробуем переустановить

Иногда проблема сбоев в работе бота заключается в его некорректной работе. Это можно исправить, переустанови музыкального бота.

Если лагает бот с музыкой в дискорде, нужно:

  1. Войти в приложение, перейти на сервер.
  2. Найти нужный бот в списке.
  3. Щелкнув по нему правой кнопкой мыши и выбрать «Удалить».
  4. Нужно выбрать новый бот, и установить его.
  5. Установив бота на сервер он будет показан как новый пользователь. Администратору потребуется выдать роль роботу, если та не определилась автоматически.
  6. Ввести команду (для каждого бота она своя) для прослушивания музыки.

Если бот не играет музыку, то его перестановка может решить проблемы с зависанием.

Лагает программа Дискорд — ждем окончания сбоя

Иногда причиной сбоя в работе бота является проблема в самом Дискорде. Причиной для появления сбоя может стать низкая скорость Интернет – соединения или же неверные настройки самого Дискорда.

Что делать в такой если бот не проигрывает музыку в Дискорде:

  1. Подождать или перезапустить программу. В большинстве случаев, сбой в Дискорде бывает временным.
  2. Проверить Интернет – соединение. Из – за никой скорости могут возникать сбои в работе.
  3. Переустановить Дискорд. Если же лаги не исчезают, а бот отказывается нормально работать, должна помочь перестановка программы.
  4. В некоторых случаях рекомендуется проверить, обновлены ли драйверы звуковой карты.

Исправить зависание Дискорда можно в кратчайшие сроки. Иногда даже не требуется ничего делать, а просто подождать, когда программа начнет нормально функционировать.

Дискорд – удобная платформа для общения, отличающаяся высокой оптимизацией. Однако, без сбоев и лагов в работе программы не удается обойтись. К счастью, устранить проблему с зависанием музыкального бота можно за считанные минуты.

@bot.command()
async def coin(ctx):
    await ctx.channel.send(
        "This is our **bet** coin : <:coiner:902807543569584158>",
        components = [
            Button(label = "Animated coin")
        ]
    )
    while True:
        interaction = await bot.wait_for("button_click", check = lambda i: i.component.label.startswith("Animated"))
        await interaction.respond(content = "<a:coinanimated:9028075435695848902>")

When I open discord and try to press button, it will write «this interaction failed» error

asked Oct 27, 2021 at 8:43

Puk3l_YT's user avatar

2

SOLVED

pip uninstall discord.py

pip install discord.py=1.7.3

Then just use same code

answered Oct 28, 2021 at 18:35

Puk3l_YT's user avatar

@bot.command()
async def coin(ctx):
    await ctx.channel.send(
        "This is our **bet** coin : <:coiner:902807543569584158>",
        components = [
            Button(label = "Animated coin")
        ]
    )
    while True:
        interaction = await bot.wait_for("button_click", check = lambda i: i.component.label.startswith("Animated"))
        await interaction.respond(content = "<a:coinanimated:9028075435695848902>")

When I open discord and try to press button, it will write «this interaction failed» error

asked Oct 27, 2021 at 8:43

Puk3l_YT's user avatar

2

SOLVED

pip uninstall discord.py

pip install discord.py=1.7.3

Then just use same code

answered Oct 28, 2021 at 18:35

Puk3l_YT's user avatar

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка винворд при запуске приложения 0000142
  • Ошибка ввода отсутствует исполняющее ядро для расширения имени файла vbs