当(松弛)机器人离开频道时,我如何在机器人中获取一个事件来告诉它已经发生了?

问题描述 投票:0回答:2

当(slack)机器人离开频道时,我如何在机器人中获取一个事件来告诉它已经发生了? 我已经在处理 member_left_channel 但当我从通道中删除机器人时,它不会收到此事件(可能是因为当事件被触发流动时机器人已经离开通道)。

slack-api
2个回答
0
投票

听起来您的应用程序代表机器人用户事件订阅了

member_left_channel
。在应用程序的配置站点上,转到 事件订阅 并选择
代表用户订阅事件
下的 member_left_channel。如果您在经过身份验证的用户下订阅
member_left_channel
,只要该用户位于频道中,当机器人离开频道时,您应该收到一个事件。在大多数情况下,除非您的应用程序配置为支持 OAuth,否则唯一经过身份验证的用户将是您,因此请确保您位于频道中。


0
投票

您可以通过保存机器人的用户 ID,然后从指定频道检索所有成员的列表来完成此操作。之后,您可以检查机器人的 userId 是否包含在 API 响应返回的成员数组中。

代码示例-

const checkChannelBotStatus = async (botUserId, channelId, slackTeamId) => {
        try {
          const response = await client.conversations.members({
            channel: channelId,
          });
      
          const botIsInChannel = response.members.includes(botUserId);
          if (botIsInChannel) return botIsInChannel;

          return await handleBotLeftChannel({
            channel: channelId,
            team: slackTeamId,
          });
        } catch (error) {
          return false;
        }
};

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.