slack - 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 方法。
解决方案
不幸的是,目前 Slack 没有针对您的问题陈述的单一 API 调用解决方案。
推荐阅读
- angular5 - 在组件上手动调用 changeDetect() 时未调用 ngOnInit 或 ngOnChanges
- javascript - 如何从 nodejs c ++ 扩展中调用 JS 函数
- c# - 如果创建从接口继承的类的对象,我可以调用什么函数?
- c# - SQL Server EXPRESS:错误:26 - 安装后指定的服务器/实例错误定位
- python - 熊猫数据框中的条件分组
- java - 在 if 和 else 语句之外使用字符串来设置字符串值
- java - ArrayIndexOutOfBoundsException - Retrofit 2.4.0 调用
- java - rxJava 2.0 如何将两个 sql 表的结果合并到一个 JsonObject 中
- junit - MyBatis - 测试参数 JdbcType
- scala - 如何将 Array[String] 转换为 spark Dataframe 以保存 CSV 文件格式?