通过 Slack API 获取共享频道列表和加入的用户列表



我的目标是列出Slack共享频道列表,该列表通过Slack Web API加入了用户。

/usr/bin/curl -s -XPOST 'https://slack.com/api/conversations.list?token=MY_TOKEN&pretty=1' | jq -r '.channels[]|select(.is_shared = "true")'

但回报也包括非共享渠道,就像(.is_shared = "false")一样。我不知道为什么我会得到这样的结果。感谢任何帮助。

我使用以下代码

/usr/bin/curl -s -XPOST 'https://slack.com/api/conversations.list?token=MY_TOKEN&pretty=1'

结果是

{
"ok": true,
"channels": [
{
"id": "C2U56FH6Z",
"name": "hoge_general",
"is_channel": true,
"is_group": false,
"is_im": false,
"created": 1477470814,
"is_archived": false,
"is_general": false,
"unlinked": 0,
"name_normalized": "hoge_general",
"is_shared": false,
"parent_conversation": null,
"creator": "U2UABCDEF",
"is_ext_shared": false,
"is_org_shared": false,
"shared_team_ids": [
"T2U94ABCDE"
],
"pending_shared": [],
"pending_connected_team_ids": [],
"is_pending_ext_shared": false,
"is_member": true,
"is_private": false,
"is_mpim": false,
"topic": {
"value": "Editor 2",
"creator": "U2UABCDE",
"last_set": 1478675694
},
"purpose": {
"value": "AAA editor ",
"creator": "U2UABABCDF",
"last_set": 14774596815
},
"previous_names": [],
"num_members": 11
},

所以,我尝试获取香奈尔名称,该方法是.

jq 中的值比较是使用==运算符完成的;=是改变值的赋值运算符(类似于许多类似C的编程语言(。

JSON 文档中的is_shared属性是布尔类型(truefalse(,但您要将其与字符串("true""false"(进行比较。这将始终导致 false(true == "true"是 false(。

相反,将布尔值与布尔值进行比较:.channels[] | select(.is_shared == true)

而且,与大多数其他编程语言一样,条件语句隐式地比较 true 和 true,所以如果你在某个地方有== true,这在 99% 的时间内是多余的,可以简化:.channels[] | select(.is_shared)

最新更新