Pycord简单Slash命令触发“This interaction failed”错误排查求助
问题排查与解决思路
未同步斜杠命令到服务器:Pycord不会自动同步斜杠命令到Discord服务器,仅编写命令代码会导致Discord端能看到命令但找不到执行逻辑。可在
on_ready事件中添加同步代码,测试时建议指定服务器ID实现即时同步:@bot.event async def on_ready(): # 替换为你的测试服务器ID await bot.sync_commands(guild_ids=[1234567890]) print(f'Logged in as {bot.user}')全局同步(不指定服务器)可能需要1小时才会生效。
未回复交互请求:Discord要求斜杠命令必须在3秒内回复交互,若命令函数中没有
await ctx.respond()或await ctx.defer(),会直接触发“This interaction failed”,且本地不会报错。正确的极简命令示例:@bot.slash_command(name="test", description="测试斜杠命令") async def test_cmd(ctx): await ctx.respond("命令执行成功")Pycord版本兼容问题:旧版本Pycord存在斜杠命令的已知bug,建议升级到最新稳定版:
pip install --upgrade py-cord命令处理超时:若命令逻辑耗时超过3秒,需先发送延迟响应,避免Discord判定交互失败:
@bot.slash_command(name="long_task", description="耗时任务测试") async def long_task_cmd(ctx): # 发送延迟响应,告知Discord命令正在处理 await ctx.defer() # 模拟耗时操作 await asyncio.sleep(5) # 后续发送结果 await ctx.followup.send("任务完成")频道级权限限制:即使机器人拥有服务器管理员权限,仍需检查目标频道的权限设置,确保机器人角色拥有「发送消息」「嵌入链接」等基础权限,否则回复交互时会静默失败。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

