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 中的 View
s 超时为 180 秒(3 分钟)。您可以通过在创建视图时传入 None
作为超时来修复此错误。
代码
@bot.command(name='place')
async def hello(ctx):
view = discord.ui.View(timeout=None)
参考资料
我有一个非常基本的脚本,它会弹出一条消息,其中包含一个带有命令 ?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 中的 View
s 超时为 180 秒(3 分钟)。您可以通过在创建视图时传入 None
作为超时来修复此错误。
代码
@bot.command(name='place')
async def hello(ctx):
view = discord.ui.View(timeout=None)