You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Slack工作区中查找关注特定主题(如Jira)的最活跃用户?API、工具或查询语句方案选型咨询

嘿,针对你想在Slack里找关注特定主题(比如Jira)的最活跃用户这个需求,我来分享几个实用的方案,刚好我之前帮团队处理过类似的统计问题😎

解决方案:Slack特定主题活跃用户查找

一、先看现成工具(最省心的选项)

  • Slack原生搜索+第三方分析工具:Slack自带的搜索能快速筛选出含特定关键词(比如Jira)的消息,但原生确实没有聚合统计功能。不过Slack的应用商店里有不少专门做用户活跃度分析的工具,搜“user activity analytics”或者“message stats”就能找到,它们能自动对接你的工作区,按用户统计发送次数、提及目标关键词的频率,大部分基础功能都是免费的,不用自己写一行代码。
  • Workspace Analytics(付费版专属):如果你的工作区是付费版,自带的Workspace Analytics里有用户活跃度的基础统计面板,虽然不能直接按关键词筛选,但可以先通过搜索导出含目标词汇的消息列表,再用Excel这类工具做简单的次数统计,也算个省事的折中方案。

二、用Slack API自定义实现(灵活可控)

其实自己写代码实现真不算大材小用,尤其是当你需要定制规则(比如排除机器人消息、结合多个关键词组合)的时候,API方案的灵活性是工具比不了的。这里给你对应两种思路的简易实现参考:

1. 特定频道内的活跃用户

用conversations.history API拉取目标频道的所有消息,然后自己统计用户发送次数:

import slack_sdk

# 初始化客户端,替换成你的Slack Token
client = slack_sdk.WebClient(token="YOUR_SLACK_BOT_TOKEN")
target_channel = "CXXXXXXX"  # 目标频道ID
user_activity = {}

# 处理分页(Slack API单次返回结果有限)
next_cursor = None
while True:
    response = client.conversations_history(channel=target_channel, cursor=next_cursor)
    for msg in response["messages"]:
        # 排除机器人和系统消息,只统计真实用户
        if "user" in msg and not msg.get("bot_id"):
            user_id = msg["user"]
            user_activity[user_id] = user_activity.get(user_id, 0) + 1
    next_cursor = response.get("response_metadata", {}).get("next_cursor")
    if not next_cursor:
        break

# 按活跃度从高到低排序
sorted_users = sorted(user_activity.items(), key=lambda x: x[1], reverse=True)
print(sorted_users)

2. 含特定词汇的活跃用户

用search.messages API搜索含目标关键词的消息,再统计用户发送次数:

import slack_sdk

client = slack_sdk.WebClient(token="YOUR_SLACK_BOT_TOKEN")
target_keyword = "Jira"
user_activity = {}

next_cursor = None
while True:
    response = client.search_messages(query=target_keyword, cursor=next_cursor)
    for match in response["messages"]["matches"]:
        if "user" in match and not match.get("bot_id"):
            user_id = match["user"]
            user_activity[user_id] = user_activity.get(user_id, 0) + 1
    next_cursor = response.get("response_metadata", {}).get("next_cursor")
    if not next_cursor:
        break

sorted_users = sorted(user_activity.items(), key=lambda x: x[1], reverse=True)
print(sorted_users)

注意:使用API需要申请对应权限(比如channels:history、search:read),还要注意Slack的调用频率限制,记得加重试逻辑哦。

三、有没有类似SQL的巧妙查询?

可惜的是,Slack自带的搜索语言真的没有GROUP BY、COUNT这类聚合语法,它的核心定位是精准查找消息,而非统计分析。所以如果想要聚合统计,要么用第三方工具,要么自己用API拉数据后处理,暂时没有更“巧妙”的原生查询方式。

总结建议

  • 偶尔统计需求:优先用第三方分析工具,省时间不用折腾代码;
  • 定制化统计需求:用Slack API自己实现,代码量其实不大,完全算不上大材小用;
  • 付费版用户:可以结合Workspace Analytics和搜索导出的消息做快速统计。

内容的提问来源于stack exchange,提问作者Patrik Lindström

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 07:17:34