关键词监听
什么是关键词监听
关键词监听用于长期监听某个聊天、群组或频道中的新消息,一旦命中指定关键词,就立即执行通知、转发或后续动作。
这类任务通常使用执行模式 listen。
适用场景
- 监听机器人回执
- 监听抽奖口令
- 监听活动关键词
- 监听某条消息后再自动回复
- 监听到验证消息后继续 AI 识图或点按钮
匹配方式
当前支持四种匹配模式:
contains:包含exact:完全匹配regex:正则表达式all:不筛选关键词,监听范围内任意新消息都会命中。适合需要全量转发或审计的场景
默认行为:
- 监听任务默认
ignore_case = true contains和exact支持换行或逗号分隔多个关键词regex模式按”每行一个正则”处理
推送通道
push_channel 支持以下值:
1. continue
命中后继续执行动作序列。
适合:
- 监听后立刻回复文本
- 监听后继续点按钮
- 监听后调用 AI 识图或计算
2. telegram
只发送 Telegram Bot 通知。
依赖全局设置里的:
telegram_bot_tokentelegram_bot_chat_idtelegram_bot_message_thread_id,可选
3. forward
把命中的消息整理后转发到指定聊天。
支持:
forward_chat_idforward_message_thread_id
4. bark
把命中消息推送到 Bark。
支持:
bark_url
5. custom
把命中消息推送到自定义 URL。
支持两种方式:
GET模板 URL:URL 中可使用{title}、{body}、{url}POST JSON:如果 URL 中没有模板变量,则直接发 JSON
面板监听任务的 push_channel 仅支持:continue、telegram、forward、bark、custom。
ServerChan / Server 酱没有独立通道枚举;请用 custom 接入,例如:
https://sctapi.ftqq.com/<sendkey>.send?title={title}&desp={body}CLI /
tg_signer监控配置(MatchConfig)另支持push_via_server_chan+server_chan_send_key,与面板push_channel不是同一套字段。
UDP/HTTP 外部转发
执行引擎支持在监听命中后把原始消息转发到外部系统:
udp:适合发给本机或内网的轻量事件接收器,字段包括host、port。http:适合调用 Webhook,字段包括url,系统会发送 JSON 负载。
外部转发适合接入现有自动化平台、审计流水线或自建告警系统。生产环境建议只指向内网地址或可信 HTTPS 端点。
后续动作
当 push_channel = continue 时,可以继续执行动作序列。
支持的后续动作类型为:
1发送文本2发送骰子3点击文字按钮4根据图片选择选项5回复计算题6AI 识图后回复文本7AI 计算后点击按钮9触发 Bot 命令:向指定 Bot 发送命令,参数从关键词捕获值或消息内t.me/bot?start=深链自动替换bot_username:目标 Bot(可选;消息含深链时可自动解析)command_prefix:命令前缀,默认/startstart_param:参数模板,默认{keyword}multi_match:是否批量发送全部捕获值,默认trueparse_deep_links:是否解析消息内深链,默认truesend_interval:批量发送间隔秒数,默认2(等待而非跳过)max_batch:单次最多发送条数,默认5
⚠️ 风险提示:请勿轻易调高
max_batch。短时间内向同一 Bot 连发大量/start容易触发 Telegram 风控、限流,严重时可能导致账号受限或封禁。若消息中的注册码超过 5 条,默认只处理前 5 条。
后续动作同样支持 ai_prompt。
文本模板变量
在后续文本动作里,可以使用这些变量:
| 变量 | 含义 |
|---|---|
{keyword} | 命中的关键词或正则捕获值 |
{message} | 原消息全文 |
{text} | 原消息全文 |
{sender} | 发送者 |
{chat_id} | 来源聊天 ID |
{chat_title} | 来源聊天标题 |
{message_id} | 原消息 ID |
{url} | 原消息链接 |
{task_name} | 当前任务名 |
{account_name} | 当前执行账号名 |
目标聊天与话题
监听规则支持:
chat_idmessage_thread_id
如果你只想监听某个论坛话题,请填写 message_thread_id。否则留空即可。
发送者过滤(白名单)
监听规则支持按发送者用户名过滤,仅匹配指定账号发送的消息:
sender_filter:填写用户名(不带@),多个用逗号或换行分隔- 留空表示不过滤,监听所有人的消息
示例:填写 user1,user2 则只监听这两个用户发送的消息,其他人发送的消息会被忽略。
自定义推送 URL 的 JSON 负载
当 custom_url 不包含模板变量时,系统会 POST 一个 JSON 负载,常见字段包括:
titlebodytextkeywordaccount_nametask_namechat_idchat_titlesendermessage_idurl
实战示例
示例 1:命中后只通知
- 模式:
contains - 关键词:
已开奖 - 推送:
telegram
示例 2:命中后继续回复
- 模式:
regex - 关键词:
验证码[::]\\s*(\\w+) - 推送:
continue - 后续动作:发送文本
{keyword}
示例 3:命中后转发到指定话题
- 推送:
forward forward_chat_id:-1001234567890forward_message_thread_id:目标话题 ID
示例 4:命中后自动触发 Bot 注册命令
- 模式:
regex - 关键词:
Register_(\w+) - 推送:
continue - 后续动作:触发 Bot 命令
- Bot 用户名:
GYFMsky_bot - 命令前缀:
/start(默认)
- Bot 用户名:
当消息包含 MSKY-30-Register_KsdaqumLAS 时,正则捕获 KsdaqumLAS, 系统自动向 @GYFMsky_bot 发送 /start KsdaqumLAS。
一条消息出现多个 Register_xxx 时,默认会按间隔(默认 2 秒)依次发送,最多 5 条(max_batch)。
示例 5:消息内多条 t.me/bot?start= 深链抢注
消息示例:
已为您生成了30天注册码3个
t.me/shrekpublicbot?start=SAKURA-30-Register_Ywyx26Doxi
t.me/shrekpublicbot?start=SAKURA-30-Register_QjElUtgTgs
t.me/shrekpublicbot?start=SAKURA-30-Register_Q2NK4Yw68E推荐配置:
- 模式:
contains或regex(任意能命中该消息的规则即可,例如关键词注册码) - 推送:
continue - 后续动作:触发 Bot 命令
- Bot 用户名:可留空(自动从深链解析
shrekpublicbot),也可手动填写 - 命令前缀:
/start
- Bot 用户名:可留空(自动从深链解析
系统会依次发送:
/start SAKURA-30-Register_Ywyx26Doxi
/start SAKURA-30-Register_QjElUtgTgs
/start SAKURA-30-Register_Q2NK4Yw68E优先级:若消息中存在可解析的
t.me/?start=深链,优先使用深链中的完整start参数(而不是正则只捕获后缀)。
⚠️ 风险提示:
max_batch默认 5。调高后短时间连发/start可能触发 Telegram 风控、限流甚至账号封禁,请勿为抢注盲目加大。
注意:通过 API 发送给 Bot 的
/start消息不会显示在 Telegram 客户端的对话列表中,这是 Telegram 的设计行为,不影响功能。Bot 端确实收到了消息并会正常响应。可通过任务日志中的「Bot 命令触发成功」确认发送状态。
设计建议
- 监听规则尽量按聊天拆分,避免一个任务承载太多不同语义
- 正则规则优先做小范围、强约束匹配
- 若命中后还要交互,直接使用
continue,不要再拆成第二个独立定时任务 - 如果命中消息来自机器人验证流程,下一步动作建议紧跟 AI 动作