仅使用 Slack 命令删除交互式消息(命令响应)API

Delete interactive message (command response) just with Slack Commands API

所以我正在 Node 中构建一个响应某些用户命令的松弛应用程序。它通常以带有一些附件和按钮的交互式消息进行响应。

对于某些按钮,我 return 不同类型的文本或其他附件,但我也想要一个 "Cancel" 按钮,它基本上会取消当前命令 - 从用户的聊天中删除它.

问题是 我想这样做而不必请求 chat:write:user 范围或不必创建机器人

  1. 通过请求 chat:write:user 范围,我基本上可以删除用户创建的任何消息,但它在安装应用程序时请求该范围并授予我的应用程序 post 代表用户,哪个最觉得不舒服。

  2. 通过创建一个机器人我可以实现这一点,但它再次要求获得将机器人添加到频道的权限,我不想要这个。

我试过的

  1. 使用 chat.delete 方法,但我从 Slack 得到 { ok: false, error: 'missing_scope', needed: 'chat:write:user', provided: 'identify,commands' },即使我尝试将 as_user 设置为 false.

  2. 用空消息响应命令,如res.send()、或res.send({ text: null })、或res.send({ attachments: null })等。 当您在 Slack 上回复用户命令时,默认情况下它会覆盖以前的内容。我只想什么都不覆盖,基本上删除原始响应。但是,当我尝试这样做时,它什么也没做,除非我提供 some 内容。

我很确定 #2 是要走的路,我觉得我很接近,它很简单,但在我的视线之外。

我想要的工作示例

我知道这是可以做到的,因为 GIF Keyboard 应用程序可以做到这一点。在搜索 Gif 时,他们在底部有一个 "cancel" 按钮,可以删除当前的 command/message。此外,他们只要求命令范围。

你走在正确的轨道上。选项 #2 有效,因此无需请求范围来删除消息。

只需将以下响应发送回 Slack,您的应用中的最后一条(临时)消息将被删除:

{
    "response_type": "ephemeral",
    "replace_original": true,
    "delete_original": true,
    "text": ""
}