Slack API:select 对话成员,同时过滤掉没有 n+1 的机器人

Slack API: select conversation members while filtering out bots without n+1

我需要 select 不是机器人的对话的所有成员。看起来这样做的方法是先调用 conversations.members and then for each member call 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,还是仅仅通过香草 API 方法。

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