#!/bin/bash # ============================================================================= # Moltbook Automator - Reply Script # 自动回复 Moltbook 消息 # ============================================================================= set -e SKILL_DIR="$HOME/.clawdbot/skills/moltbook-automator" CONFIG_FILE="$SKILL_DIR/config.json" STATE_FILE="$SKILL_DIR/state.json" LOG_FILE="$HOME/.clawdbot/moltbook-automator.log" log() { echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] [REPLY] $1" | tee -a "$LOG_FILE" } # 发送回复 send_reply() { local post_id="$1" local author="$2" local template="$3" # 替换模板变量 local message="${template//\{author\}/$author}" log "正在回复帖子 $post_id (作者: $author)..." local prompt="请帮我在 Moltbook 上回复帖子 ID: $post_id 回复内容: $message 请确认回复已发送。" clawdbot agent --message "$prompt" --deliver >> "$LOG_FILE" 2>&1 # 更新统计 jq '.today_stats.auto_replies_sent += 1 | .lifetime_stats.total_auto_replies += 1' \ "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE" log "✅ 回复已发送" } # 处理提及 handle_mention() { local post_id="$1" local author="$2" local template=$(jq -r '.auto_reply.rules[] | select(.trigger == "mention") | .template' "$CONFIG_FILE") if [ -n "$template" ] && [ "$template" != "null" ]; then send_reply "$post_id" "$author" "$template" fi } # 处理私信 handle_dm() { local dm_id="$1" local author="$2" local preview="$3" local template=$(jq -r '.auto_reply.rules[] | select(.trigger == "dm") | .template' "$CONFIG_FILE") if [ -n "$template" ] && [ "$template" != "null" ]; then local message="${template//\{author\}/$author}" message="${message//\{preview\}/$preview}" log "收到私信通知: $message" # 通知用户而不是自动回复私信 local discord_user_id=$(jq -r '.discord_user_id' "$CONFIG_FILE") clawdbot agent --channel discord --to "$discord_user_id" \ --message "📬 Moltbook 私信通知: $message" --deliver >> "$LOG_FILE" 2>&1 fi } # 处理关键词触发 handle_keyword() { local post_id="$1" local author="$2" local content="$3" # 获取关键词列表 local keywords=$(jq -r '.auto_reply.rules[] | select(.trigger == "keyword") | .keywords[]' "$CONFIG_FILE") local template=$(jq -r '.auto_reply.rules[] | select(.trigger == "keyword") | .template' "$CONFIG_FILE") for keyword in $keywords; do if echo "$content" | grep -qi "$keyword"; then log "检测到关键词: $keyword" send_reply "$post_id" "$author" "$template" return fi done } # 使用说明 usage() { echo "用法: $0 [args...]" echo "" echo "命令:" echo " mention 处理提及" echo " dm 处理私信" echo " keyword 处理关键词" echo "" echo "示例:" echo " $0 mention 12345 alice" echo " $0 dm 67890 bob '你好,请问...'" } # 主函数 main() { local command="$1" shift # 检查自动回复是否启用 local enabled=$(jq -r '.auto_reply.enabled' "$CONFIG_FILE") if [ "$enabled" != "true" ]; then log "⚠️ 自动回复未启用 (config.json -> auto_reply.enabled = false)" exit 0 fi case "$command" in mention) handle_mention "$@" ;; dm) handle_dm "$@" ;; keyword) handle_keyword "$@" ;; *) usage exit 1 ;; esac } if [ $# -eq 0 ]; then usage exit 1 fi main "$@"