个人微信群聊机器人:消息监听、唤醒词与定时推送
·
1. 引言
个人微信二次开发里,私聊自动回复相对好做,群聊更容易出问题:消息密度高、@ 解析不统一、欢迎语重复、定时推送把群聊刷屏。本文只讲个人微信群场景的工程做法,不涉及任何商业接口。
2. 群消息和私聊的差别
| 点 | 私聊 | 群聊 |
|---|---|---|
| 目标 ID | 发送者 | 群 ID,回复不能回错人 |
| 唤醒 | 每条都可处理 | 必须加唤醒条件 |
| 频率 | 一对一还好 | 一条群消息触发全员可见 |
| 系统消息 | 较少 | 进群、退群、改群名混在一起 |
群聊机器人默认「沉默」,只有命中规则才开口。
3. 唤醒词设计
常见三种:
@机器人或 @ 指定成员- 前缀命令:
查 订单号、#天气 北京 - 关键词白名单:仅「价格」「地址」等少量词
def should_reply_group(msg) -> bool:
if not msg.from_group():
return False
text = (msg.content or "").strip()
if msg.is_at_me():
return True
if text.startswith("查 ") or text.startswith("#"):
return True
return False
没唤醒就 return,比事后用「抱歉我只是机器人」补救更干净。
4. 进群欢迎要幂等
进群系统提示可能重复推送。欢迎语按「群 ID + 成员 ID」做一次性标记,过期时间至少 24 小时。
def welcome_if_needed(room_id: str, user_id: str, send_fn):
key = f"welcome:{room_id}:{user_id}"
if not redis.set(key, 1, nx=True, ex=86400):
return
send_fn(room_id, "欢迎进群,请先阅读群规。")
欢迎语放短规则,不要接大模型,避免进群瞬间刷长文。
5. 定时推送
日报、天气、值班表适合定时,不适合高频营销。建议:
- 每个群独立开关和时间点
- 发送前检查仍在群内、账号仍在线
- 失败重试最多 1 次,避免早上 9 点连发三条
- 内容先写到文件或后台,再由任务读取,不要把文案写死在脚本里
import schedule
def push_daily(room_id: str):
if not is_online() or not in_room(room_id):
return
wcf.send_text(load_daily_text(), room_id)
schedule.every().day.at("09:00").do(push_daily, room_id="目标群ID")
6. 群聊安全
- 管理命令(踢人、改名)必须校验发送者是否管理员
- 不要把群消息原文未经脱敏就写入公开日志
- 控制机器人发言占比,群成员投诉是比技术故障更早的下线信号
- 用小号测试,确认 Hook 或客户端版本匹配后再进正式群
7. 总结
个人微信群机器人能落地的关键不是「全自动」,而是唤醒条件、欢迎幂等、定时可关。群是公共空间,少说错比多说一句更重要。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)