更新机器人发布的消息时出现“cant_update_message”错误

Iri*_*ina 5 slack-api

我正在尝试更新我的机器人发布的消息。但是,我在尝试调用 chat.update 时收到“cant_update_message”错误。这就是我的通话的样子:

oauth_token = os.environ.get("OAUTH_TOKEN")
sc=SlackClient(oauth_token)
sc.api_call("chat.update", channel=channel_id, text=text, ts=ts)
Run Code Online (Sandbox Code Playgroud)

我还尝试了 Bot OAuth 令牌而不是 OAuth 令牌,以及 as_user 的所有组合(True、False、机器人的用户 ID...),但没有成功。

另外,请注意通道和时间戳已经过测试并且是正确的;当我发布消息并且我是通过斜杠命令调用它的人时,我可以使用 OAuth 令牌更新消息。

我是 Slack API 开发的新手。你能让我知道我需要做什么才能让它工作吗?

另外,通过 chat.update 发布消息时是否可以自定义其他设置(例如username和)?icon_url这是一个重要的功能,因为我的机器人有时会使用不同的显示名称和图标进行发布。

Eri*_*ken 3

你说你的消息是通过 webhook 发布的,我不太确定这些消息可以通过 API 方法更新。

为了确保您可以更新应用程序发布的消息,您需要使用以下两种方法之一:

  • 响应斜杠命令而不是通过 webhook 发布。您可以控制斜杠命令回复的行为,例如覆盖前一个命令以更新它。
  • 使用chat.postMessageAPI 方法而不是 webhook 来发布消息。

我会推荐第一个,因为无论访问权限如何,它都可以在任何渠道中使用。您的应用程序需要有权访问频道才能使用第二种方法。(这对于某些私人频道来说可能是一个问题)。

当您使用这些方法之一时,它还将确保来自您的应用程序的帖子始终具有您的应用程序的图标和名称(斜杠命令链接到的图标和名称)。

  • 这有助于解决我的问题。我之前通过我的机器人的 webhook 发布了一条消息,并想使用 chat.update 更新它,但尽管有正确的范围,但仍然收到“无法更新消息”错误。然后我用 chat.postMessage 重新发布了该消息,更新成功了。 (2认同)