如何看到有人在 Slack 中将 public 频道设为私有?

How to see that someone made public channel private in Slack?

我不知道如何使用 Slack 的 EventsAPI 来完成。

所以,我们的机器人会这样做:

  1. 创建public频道#test
  2. 使用用户令牌邀请机器人加入频道
  3. 从现在开始,我们将使用机器人令牌在频道post 上发送消息

有人将 public 频道转换为私人频道时会出现此问题。频道 ID 发生变化,机器人收到错误 channel_not_found

您知道如何在我们的系统上自动跟踪此更改和更新 ID 吗? Bot还是频道的会员!

我认为目前不可能。

自然地,您会期望在转换频道时针对该情况触发特定的 Slack event,但似乎没有。如果您需要这个,我建议您写一个请求,他们会为其添加一个事件。

您可以做的一件事是限制谁可以在您的 Slack 工作场所创建私人频道,以限制意外使用的风险。

但是,您可以通过检查 conversations.list, and which channels you bot is a member with conversations.member 中存在哪些 public 和私人频道来防止出现此错误。

我找到了方法,也得到了 Slack 帮助团队的确认。

基本上当频道转换为私有时,您会得到这些事件:

  1. channel_deleted 使用您的 public 频道的 ID
  2. member_joined_channel 新私人频道的 id 和 bot_id

当您获得 member_joined_channel 时,从 Slack 检索新频道的名称,如果它与您之前的 public 频道匹配,那么您知道它是同一个频道,但现在是私人频道。

Slack 不允许创建同名频道,所以这是指标。

我刚刚使用正式版应用对其进行了测试,它可以正常工作! :)