#!/usr/bin/env bash # subscribe.sh —— 飞书群消息长连接订阅(WebSocket,无需公网回调) # # 起一个常驻长连接,把 @机器人 的群消息事件逐条落到 events/ 目录, # 由 handle.py 消费。单实例锁由 lark-cli 保证(勿加 --force)。 # # 用法: # bash tools/kb-bot/subscribe.sh # 前台跑 # nohup bash tools/kb-bot/subscribe.sh & # 后台常驻 # # 依赖: lark-cli 已装且 bot 身份可用(lark-cli auth status)。 set -euo pipefail BOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" EVENTS_DIR="$BOT_DIR/events" mkdir -p "$EVENTS_DIR" export PATH="$HOME/.npm-global/bin:$PATH" if ! command -v lark-cli >/dev/null 2>&1; then echo "ERROR: lark-cli 不在 PATH。请先安装并 lark-cli auth login。" >&2 exit 2 fi echo "[kb-bot] 订阅飞书群消息事件 → $EVENTS_DIR" echo "[kb-bot] 只收 im.message.receive_v1;Ctrl-C 停止。" # --output-dir: 每个事件写成独立 JSON 文件,handle.py 轮询消费 # --compact: 扁平化,提取 text,去噪 # --quiet: 抑制 stderr 状态噪音(避免日志泄露) exec lark-cli event +subscribe \ --event-types im.message.receive_v1 \ --compact \ --quiet \ --output-dir "$EVENTS_DIR"