消息监听使用指南
这篇文章用于说明:消息监听适合做什么,几条监听指令应该怎么搭配,以及监听结果后续应该怎么处理。
一句话结论
消息监听更适合做“持续收消息记录”,不适合直接代替【获取当前消息】或【获取下一个新消息】。
如果你的目标是:
- 持续盯多个聊天
- 定时读取新到的消息
- 先收集,再统一处理
那么监听很适合。
如果你的目标是:
- 临时拿一批新消息
- 紧接着继续做点击、下载、引用、转发
那么【获取下一个新消息】通常更直接。
这 6 条监听指令分别做什么
| 顺序 | 指令 | 作用 |
|---|---|---|
| 1 | 【添加监听聊天】 | 把某个聊天加入监听范围 |
| 2 | 【开始监听】 | 真正开始监听 |
| 3 | 【读取监听消息】 | 读取当前已收到的监听记录 |
| 4 | 【清空监听消息】 | 清空当前已收到的监听记录 |
| 5 | 【停止监听】 | 停止监听,可选是否移除监听范围、是否清空记录 |
| 6 | 【移除监听聊天】 | 只移除某一个聊天的监听 |
推荐搭配顺序
最常见的监听流程是:
- 【初始化微信】
- 对每个目标聊天执行【添加监听聊天】
- 【开始监听】
- 中间留出等待时间,按需反复执行【读取监听消息】
- 不再需要监听时执行【停止监听】
为什么【开始监听】后不能立刻【停止监听】
因为监听需要时间去接收新消息。
如果【开始监听】和【停止监听】直接挨在一起,中间几乎没有等待,那么监听虽然启动过,但通常还没来得及收到任何消息。
更合理的做法是,在两者之间放一段真正会消耗时间的流程,例如:
- 循环 + 等待
- 固定等待一段时间
- 先去执行别的自动化步骤,再回来读取和停止
【读取监听消息】拿到的是什么
【读取监听消息】拿到的是监听期间累计的消息记录。
你可以把它理解成一份“收到消息的清单”,适合用来:
- 判断哪些聊天来了新消息
- 根据消息内容决定下一步流程
- 做批量处理、路由、提醒、日志记录
它更像“监听结果”,而不是“后续消息动作直接用的当前消息列表”。
监听结果适合怎么用
比较推荐的用法是:
- 先读取监听消息
- 判断要处理哪个聊天、哪类消息
- 再进入对应聊天
- 重新执行【获取当前消息】或【获取下一个新消息】
- 然后再做后续消息动作
这样做的好处是,后续步骤仍然基于最新获取到的消息列表来操作,更稳一些。
监听结果不建议怎么用
不建议把【读取监听消息】的结果,直接当成下面这些指令的长期输入来源:
- 点击类操作
- 下载类操作
- 引用回复
- 转发消息
更稳妥的方式,仍然是先进入聊天,再重新获取消息。
【停止监听】的两个关键参数
【停止监听】有两个很重要的参数:
- 【移除全部监听聊天】
- 【自动清空监听消息】
可以这样理解:
- 如果你只是先暂停监听,但还想保留这批监听目标,下次继续监听时少配一步,就把【移除全部监听聊天】设为
False - 如果你希望这一轮监听结束后顺手把记录也清空,就把【自动清空监听消息】设为
True
停止后还能不能读取之前的记录
默认可以。
因为默认情况下,【停止监听】只停止监听,不会自动清空已收到的记录。
只有在你主动做了下面这些操作时,监听记录才会被清掉:
- 执行【清空监听消息】
- 执行【读取监听消息】,并把“读取后自动清空监听消息”设为
True - 执行【停止监听】,并把“自动清空监听消息”设为
True
什么时候该用【移除监听聊天】
如果你只是想结束这一轮监听,通常直接用【停止监听】就够了。
【移除监听聊天】更适合这种场景:
- 整体监听还要继续
- 但某一个聊天不想再监听了
和【获取下一个新消息】怎么选
更适合用监听的场景
- 要同时盯多个聊天
- 要持续观察一段时间
- 要先收集消息,再决定怎么处理
更适合用【获取下一个新消息】的场景
- 只想临时取下一批新消息
- 后面要立刻继续做消息动作
- 不想维护监听的开始、停止和清空流程
使用建议
- 开始监听前先执行【初始化微信】
- 如果中间要长期监听,流程里一定要给监听留出时间
- 如果后面要继续做消息动作,优先重新进入聊天并重新获取消息
