【发布时间】:2017-12-11 21:57:11
【问题描述】:
编写一个 slack 机器人,我希望能够获得我的机器人所属的所有频道的列表。一种方法是调用https://slack.com/api/channels.list,获取所有频道的(可能很大)列表,然后搜索当前(机器人)用户所属的频道。这很好用,但看起来很笨重。
有没有更好的方法?只获取给定用户所属的频道?
【问题讨论】:
编写一个 slack 机器人,我希望能够获得我的机器人所属的所有频道的列表。一种方法是调用https://slack.com/api/channels.list,获取所有频道的(可能很大)列表,然后搜索当前(机器人)用户所属的频道。这很好用,但看起来很笨重。
有没有更好的方法?只获取给定用户所属的频道?
【问题讨论】:
我认为users.conversations 是您正在寻找的。如果没有其他参数,它将返回调用用户所属的所有公共频道。
【讨论】:
不,没有更短的方法可以获取此信息。
实际上,Slack 建议为此任务使用新的 conversations 方法,因为所有其他方法中的 members 属性,例如channels.list 最近已更改为仅返回截断的用户列表。详情请见here。
使用conversations,您必须对每个频道进行额外调用才能获取用户所属的所有频道。但是,它可以同时与所有类型的频道(例如公共频道、私人频道)一起使用。
基本做法是:
获取来自conversations.list的所有对话列表
获取每个对话表单conversations.members的成员列表。
因此,如果您希望您的 Slack 应用能够面向未来并与大量用户一起工作,最好使用 conversations 方法来完成您的任务。
【讨论】: