使用Slack API获取所有私有频道的列表

sha*_*n m 9 python slack-api

我一直试图获得Slack团队中所有"团体"的列表.但是,即使使用admin privs,也groups.list只提供令牌所有者帐户所属的组.

我在研究中看到的最接近的解决方案是让机器人坐在频道中.机器人的会员资格允许它报告频道,但是后来存在使机器人进入每个私人频道的后勤问题,尽管我们无法以编程方式列出它们.

我用来挖掘私人频道列表的代码:

import requests
import json

token = '...'

r = requests.post('https://slack.com/api/groups.list', data={'token': token, 'exclude_archived': 1})
if r.ok:
  privatechannels = { c['id']: c['name'] for c in json.loads(r.text)['groups'] }
  print(privatechannels)
Run Code Online (Sandbox Code Playgroud)

Eri*_*ken 6

如果您真的需要实时监控 Slack 工作区上的所有私人频道(和 DM),还有另一种方法:

  • 确保 Slack 上的每个用户都向您的应用程序提供令牌。这可以通过每个用户为您的应用程序运行一次 Oauath 安装过程来完成。这将为每个用户创建新令牌,您的应用程序可以收集这些令牌。
  • 遍历所有活动用户令牌以编译所有对话(公共频道、私人频道、直接消息等)的列表 conversations.list
  • 遍历所有现有对话 - 使用对该对话有效的令牌 - 收集所有消息 conversations.history

  • 谢谢兄弟,我真的很感激。你真是个懒惰的大师(你的答案无处不在) (2认同)

gll*_*lls 5

宽松的隐私策略不支持此功能。

我们遵循的最基本的隐私原则是,默认情况下,您发布到Slack的任何内容都是您团队的私有内容。也就是说,查看特定团队中共享的消息和文件需要以该团队成员身份进行身份验证。

该公司即将推出的付费Plus计划将包括一个名为Compliance Exports的可选功能,该功能将使管理员可以访问其团队的通信,包括公共和私人消息。

这是访问您不属于的私人频道的最接近的方法,但是需要一封书面信... 此处以了解更多详细信息

  • 感谢您证实我的怀疑。实际上,我们已经注册了合规性出口,并经历了所有这些过程。但是,Legal希望IT部门能够连续记录谁在什么时候进入哪个渠道,而合规性出口并不能提供这些信息。我试图通过一些API脚本来弥补这一漏洞。如果要发生这种情况,我们似乎必须在每个频道中放置一个漫游器。 (2认同)
  • 仅供参考,我什至无法列出我自己的私人频道...... (2认同)