【问题标题】:How to end interaction silently?如何静默结束交互?
【发布时间】:2022-01-10 07:56:01
【问题描述】:

所以我有一个“说”命令,它不会回复用户,而只是“说”用户输入的任何内容。但似乎我的机器人希望回复用户,我认为在这种情况下这是不必要的。有没有办法在不让机器人超时并说发生错误的情况下结束交互?我知道 deferReply 存在,但这只会让机器人显示“机器人正在思考......”消息。我只是不想发送任何回复。以下是相关代码:

  async execute(interaction) {
    await interaction.channel.send(interaction.options.getString("string"));
  }

编辑: 我相信最接近的方法是发送一条消息,然后立即将其删除:

  async execute(interaction) {
    await interaction.reply({
      content: `.`,
    });
    await interaction.deleteReply();
    await interaction.channel.send(interaction.options.getString("string"));
  },

Discord 确实应该添加静默结束交互的功能,例如:

await interaction.noReply();

【问题讨论】:

标签: javascript discord.js


【解决方案1】:

没有不回复斜杠命令的真正解决方案。

以下仅适用于选定的菜单和按钮。
<Interaction>.deferUpdate() 确认交互而不做任何其他事情。
确认交互后无需任何错误或回复。

【讨论】:

  • 我相信这仅适用于包含按钮的机器人消息。根据我自己的测试,我认为这不适用于常规消息。
  • 正确,我忘了包含信息
【解决方案2】:

您可以像这样向用户回复短暂的:

await interaction.reply({ ephermal: true, content: 'Echoed' });
await interaction.channel.send(interaction.options.getString("string"));

这样,您可以防止交互失败。

关于失败的小背景:

Discord 要求客户端确认每次交互。因此,您必须响应交互以阻止交互失败。

临时消息仅对执行者可用。所以没有其他用户可以看到回复。他们只能看到带有选项文本的“后续”消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 2012-12-06
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多