首页 > 解决方案 > Slack API:选择对话成员,同时过滤掉没有 n+1 的机器人

问题描述

我需要选择不是机器人的所有对话成员。看起来这样做的方法是首先调用conversations.members,然后为每个成员调用users.info。使用 slack ruby​​ 客户端,归结为:

client = Slack::Web::Client.new(token: "MY-OAUTH-TOKEN")

# returns an array of user ids
response = client.conversations_members(channel: "#some-channel", limit: 500)
member_ids = response.members

members = member_ids.reject do |member_id|
  # returns a https://api.slack.com/types/user object
  user = client.users_info(user: member_id)
  user["user"]["is_bot"] == true
end

这显然提出了一个n+1问题。我想知道我是否忽略了一个更好的 API 方法来调用,或者一个 API 方法参数可以帮助解决这个问题,无论是通过 slack-ruby-client 还是通过 vanilla API 方法。

标签: slackslack-api

解决方案


不幸的是,目前 Slack 没有针对您的问题陈述的单一 API 调用解决方案。


推荐阅读