【问题标题】:Slash commands produce "interaction failed" when invoked in chat?在聊天中调用斜杠命令会产生“交互失败”?
【发布时间】:2022-01-11 02:48:20
【问题描述】:

我正在使用 discord-py-slash-command 库并设置了我的命令。但是,当我在聊天中键入命令时,每次都会交互失败。我已经为我的机器人提供了正确的范围,并多次将其重新邀请到服务器。有人可以看看我的代码并告诉我发生了什么吗?我已经按照几个教程没有运气。

TOKEN = open("./token.txt", "r").readline()

bot = commands.Bot(command_prefix='-', intents=discord.Intents.all())
slash = SlashCommand(bot, sync_commands=True)


@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to the Discord!')


@slash.slash(name="test", description='Test slash command activated', guild_ids= 
[928451150515150890])
async def test(ctx: SlashContext):
    embed = discord.Embed(title="Embed Test")
    await ctx.send(embed=embed)

【问题讨论】:

  • 您的代码非常适合我,您是否执行了以下操作? 1. 导入所有需要的模块 2. 使用bot.run(TOKEN) 启动你的机器人 3. 公会 ID 是正确的。
  • 这段代码没有理由不工作。您是否以 application.commands 权限邀请您的机器人(来自 Discord 开发者页面的 OAuth url 生成器)?您的系统是否因任何原因而过载或网络连接太慢,如果机器人在 3 秒内没有响应,则表示交互失败,但您可以使用ctx.defer 方法来增加该时间
  • 我确定我导入了所有内容。是的,我多次设置了 OAuth 生成器(每次都重新邀请我的机器人)。网络连接应该不是问题。不幸的是,ctx.defer() 也不能解决我的问题

标签: python discord discord.py


【解决方案1】:

编辑:我正在编辑我的答案,因为当时我不确定您使用的是什么库。

您的代码可以正常工作,但是,如果您打算使用 intents=discord.Intents.all()

您需要确保在机器人的开发者控制台中启用状态以及服务器成员意图。

如果您的应用不需要使用 Intent,请将其禁用并将其设置为 intents=discord.Intents.default()

【讨论】:

  • OP 正在寻找一种实现 Slash 命令的方法。
  • 当时,我并没有发现 OP 使用的是什么库。感谢您的提醒。我已对我的答案进行了更正。在我这边进行了测试,它工作得很好。
  • 对我的代码进行了更改,谢谢。但是我仍然收到交互失败的消息。我脚本中的斜杠命令显示在服务器上。我可以在命令列表中看到它并使用它,但每次都失败。在这一点上,我不确定在哪里断开它
  • 让我们做一个测试,从你的服务器上踢掉机器人。返回 discord 开发者门户并单击 oauth url generator。在范围下选择 bot 和 applications.commands。对于角色,现在只需授予它完全的管理员访问权限。使用该链接将机器人添加回您的服务器,然后再次对其进行测试。
  • 我已经尝试了多次,结果相同。我还在 test() 方法的开头使用了一个简单的打印语句来查看它是否被触发。不是。奇怪的是,该命令显示在不和谐聊天中,但其背后的代码并未运行。所以我知道discord正在注册斜杠命令,但是底层代码没有被执行
【解决方案2】:

我切换到 nextcord 库以获取斜杠命令,并且行为按预期工作......我会考虑关闭

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2021-10-19
    • 1970-01-01
    • 2021-06-06
    • 2021-11-20
    • 1970-01-01
    • 2021-04-07
    • 2021-07-02
    • 2021-09-22
    相关资源
    最近更新 更多