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

Rau*_*ene 3 slack-api slack

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

对于某些按钮,我返回了不同类型的文本或其他附件,但我还想拥有一个“取消”按钮,该按钮基本上可以取消当前命令-从用户的聊天中将其删除。

问题是我想要执行此操作而不必请求chat:write:user范围或无需创建bot

  1. 通过询问chat:write:user范围,我基本上可以删除用户创建的任何消息,但是在安装应用程序时它会询问该范围,并授予我的应用程序代表用户发布的权限,这使大多数用户感到不舒服。

  2. 通过创建一个机器人,我可以实现这一目标,但是它再次请求将机器人添加到渠道的许可,但我不希望这样做。

我尝试过的

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

  2. 回应与空消息的命令,像res.send(),或者res.send({ text: null }),或者res.send({ attachments: null }),等当上松弛回复用户的命令,它会替换默认情况下,以前的内容。我只想覆盖任何内容,基本上删除了原始响应。但是,当我尝试此操作时,它不会执行任何操作,除非提供一些内容。

我很确定#2是要走的路,我觉得我已经接近了,这很简单,但我看不到。

我想要的工作示例

我知道可以做到这一点,因为GIF键盘应用程序可以轻松完成此任务。搜索Gif时,它们的底部有一个“取消”按钮,仅删除当前的命令/消息。此外,他们只要求Commands范围。

Eri*_*ken 5

您走在正确的轨道上。选项#2有效,因此无需请求作用域删除消息。

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

{
    "response_type": "ephemeral",
    "replace_original": true,
    "delete_original": true,
    "text": ""
}
Run Code Online (Sandbox Code Playgroud)