Discord.py 按钮响应交互在一定时间后失败

Discord.py Button responses interaction failed after a certain time

我有一个非常基本的脚本,它会弹出一条消息,其中包含一个带有命令 ?place

的按钮

单击此按钮后,机器人会向单击它的用户回复 Hi。

如果按钮没有交互超过大约 3 分钟,它就会开始 return“交互失败”。

之后按钮就没用了。我假设在文档中找不到某种内部超时。无论使用 discord.py (2.0) 还是 pycord,该按钮都会做同样的事情。没有任何东西击中控制台。就好像按钮点击没有被拾取一样。

偶尔按钮会再次开始工作,控制台会出现大量此类错误:

discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction
Ignoring exception in view <View timeout=180.0 children=1> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='click me' emoji=None row=None>:

我假设超时 = 180 是导致此问题的原因,但是有人知道如何停止此超时以及为什么会发生这种情况吗?我在文档中看不到任何关于 discord 按钮只能使用 3 分钟的信息。

import discord

from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
intents.message_content = True
bot = commands.Bot(command_prefix="?", intents=intents)


embed1=discord.Embed(title="Test", description = f"TESTING",color=0xffffff)   
print("bot connected")
 
@ bot.command(name='place')
async def hello(ctx):
    view = discord.ui.View()
    buttonSign = discord.ui.Button(label = "click me", style= discord.ButtonStyle.green)


    async def buttonSign_callback(interaction):
        userName = interaction.user.id
        embedText = f"test test test"
        embed=discord.Embed(title="Test", description = embedText,color=0xffffff)
        await interaction.response.send_message(f"Hi <@{userName}>")

       

    buttonSign.callback = buttonSign_callback
    view.add_item(item=buttonSign)
    await ctx.send(embed = embed1,view = view)

bot.run(TOKEN)

说明

默认情况下,discord.py 2.0 中的 Views 超时为 180 秒(3 分钟)。您可以通过在创建视图时传入 None 作为超时来修复此错误。

代码

@bot.command(name='place')
async def hello(ctx):
    view = discord.ui.View(timeout=None)

参考资料

discord.ui.View.timeout