运营上周提了个需求:客户加了客服微信,聊两句就把人拉进对应的城市群,进群要有欢迎语,群里长期没动静的“潜水员”定期清一清。
需求听着简单,拆开是三个动作:拉人、欢迎、对账。顺手把接口笔记记一下。
1. 拉人进群:两条路
微信侧的群拉新,接口能力就两条路:
两条路的接口路径和参数我记在笔记最后了,写代码前先去文档对一遍参数名,别照抄记忆。
实操上有个容易忽略的点:拉人之前先查一遍群成员。群成员接口(getChatroomMemberList)返回的 memberList 里带着 wxid,拉人前过一遍这个列表,能挡住两个尴尬:把已经在群里的人再邀请一次;还有重复入群的用户收到两次欢迎语。一个 if 的事,别省。
2. 进群之后:欢迎语的时序
欢迎语本身简单,就是监听进群事件 + 发一条消息:
# WTAPI 微信机器人接口平台 | 文档: https://weiti.apifox.cn
# 本文依赖:
# – 收进群事件: Webhook 回调 (判断路径 TypeName → Content)
# – 发消息: postText (appId/toWxid/content)
# 相关能力: 邀请成员 / 发送邀请链接 / 踢群成员模块见文档
def welcome(app_id, chatroom_id, new_member_wxid):
text = f"欢迎 @{new_member_wxid} 入群~ 群规在公告里,先看一眼"
requests.post(f"{BASE_URL}/finder/v2/api/message/postText",
headers=HEADERS,
json={"appId": app_id, "toWxid": chatroom_id,
"content": text}, timeout=10)
真正要琢磨的是什么时候发。回调收到进群事件就立刻发,新人可能还没看到群窗口;压几分钟再发,又可能被群里的其他消息顶过去。我的做法是收到事件后延迟几秒再发,让欢迎语落在新人打开群的第一个屏里。几秒的时差,打开率和体验差很多。
另外欢迎语内容走 @昵称,比“欢迎新朋友”这种群发腔调的打开感好太多——memberList 里的 displayName 字段现成的。
3. 踢人:我留了人工开关
“潜水员清理”这个需求,我最后没有做成全自动。逻辑上能实现——拉成员列表、比对活跃记录、筛出长期无发言的、调踢人接口。但踢错一个人,对方收到的体验是“莫名其妙被移出群聊”,撤不回。
现在的做法是半自动:脚本每周跑一次,把疑似不活跃的成员名单和最后活跃时间甩到运营群里,运营勾选确认后再执行。机器干体力活,人按按钮。
4. 每周对账:谁悄悄退群了
群里人少了没人会发现——没人盯着成员数。一个小脚本每周跑一次成员列表,和上周的快照做差集,退群的人一目了然:
old = load_snapshot() # 上周成员 wxid 集合(示例)
now = {m["wxid"] for m in resp["data"]["memberList"]}
left = old – now # 退群的
joined = now – old # 新进的
print(f"本周退群 {len(left)} 人, 新进 {len(joined)} 人")
别小看这个差集。退群名单里如果高频出现同一个渠道拉进来的人,说明那个渠道的质量有问题——这比拉人本身值钱。
笔记小结
邀请、踢人这些群管理接口的路径和参数,以 WTAPI 文档为准




