命令引发异常:NotFound: 404 Not Found (error code: 0): Interaction is unknown (你已经响应了交互)

Posted

技术标签:

【中文标题】命令引发异常:NotFound: 404 Not Found (error code: 0): Interaction is unknown (你已经响应了交互)【英文标题】:Command raised an exception: NotFound: 404 Not Found (error code: 0): Interaction is unknown (you have already responded to the interaction) 【发布时间】:2022-01-19 09:05:25 【问题描述】:

这是我的代码。 当我第二次使用该命令时,它会引发以下异常。 discord.ext.commands.errors.CommandInvokeError: Command raise an exception: NotFound: 404 Not Found (error code: 0): 交互未知(你已经响应了交互或者响应时间过长)

例如,首先如果我使用“button hi”命令并单击它返回 hi。第二次,当我使用相同的命令“button hello”并单击按钮时,这一次它会抛出上述异常并返回“hi”而不是“hello”。

    @bot.command()
    async def button(ctx, *, args):
      await ctx.send("hello", components=[
        [Button(label="Hi", style="3", custom_id="button1")]
      ])
      while True:
        interaction = await bot.wait_for("button_click", check=lambda i: i.custom_id == "button1")
        await interaction.send(content=args, ephemeral=True)

我正在使用 discord_components 库。 抱歉解释不好。任何帮助将不胜感激。

【问题讨论】:

你必须为此构建一个监听器。如果您执行一次命令,您也可以只单击一次按钮。 (如果我理解正确的话) @Dominik,你能试着用一个例子来解释一下吗? 您是使用同一个按钮两次还是执行命令两次然后单击按钮一次? 我在帖子中的意思是,第二次使用相同的命令,内容没有得到更新。它只是返回我第一次使用的参数。 如果我删除 while 循环,每次我使用该命令时内容都会更新。但是我不能点击按钮两次,因为它显示交互失败。 【参考方案1】:

我通过discord_components官方discord服务器找到了答案。我需要使用它的 id 检查点击了什么消息。

@bot.command()
async def button(ctx, *, args):
  message = await ctx.send("hello", components=[
    [Button(label="Hi", style="3", custom_id="button1")]
  ])
  while True:
    interaction = await bot.wait_for("button_click", check=lambda i: i.message.id == message.id)
    await interaction.send(content=args, ephemeral=True)

【讨论】:

以上是关于命令引发异常:NotFound: 404 Not Found (error code: 0): Interaction is unknown (你已经响应了交互)的主要内容,如果未能解决你的问题,请参考以下文章

将正文添加到 404 Not Found 异常

在IDEA中使用密码连接GitHub报错“lnvalid authentication data. 404 Not Found - NotFound“

Spring Boot Security 不会抛出 401 Unauthorized Exception but 404 Not Found

烧瓶教程 - 404 Not Found

返回 NotFound() 或带有 404 页面的未处理异常

在 chrome 中点击 localhost flutter web url 时出现 404 Not Found