Files
openclaw-backups/scripts/check-krillyclaw-email.sh

77 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Check for new emails and alert Anthony via Telegram
# Uses imap-smtp-email skill configuration
WORKSPACE_DIR="/home/openclaw/.openclaw/workspace"
STATE_FILE="$WORKSPACE_DIR/memory/.krillyclaw-email-state.json"
SCRIPT_DIR="$WORKSPACE_DIR/skills/imap-smtp-email"
# Ensure state directory exists
mkdir -p "$(dirname "$STATE_FILE")"
# Initialize state if needed
if [ ! -f "$STATE_FILE" ]; then
echo '{"last_uid": 0, "last_check": 0}' > "$STATE_FILE"
fi
# Get last seen UID
LAST_UID=$(jq -r '.last_uid // 0' "$STATE_FILE")
# Check for unread emails using the imap-smtp-email skill
cd "$SCRIPT_DIR"
RESULT=$(NODE_TLS_REJECT_UNAUTHORIZED=0 node scripts/imap.js search --unseen --limit 20 2>&1)
if [ $? -ne 0 ]; then
echo "Error checking email: $RESULT" >&2
exit 1
fi
# Parse UIDs from result
NEW_UIDS=$(echo "$RESULT" | jq -r '.[].uid' 2>/dev/null | sort -n)
if [ -z "$NEW_UIDS" ]; then
# No unread messages - update check time only
jq ".last_check = $(date +%s)" "$STATE_FILE" > "$STATE_FILE.tmp" && mv "$STATE_FILE.tmp" "$STATE_FILE"
exit 0
fi
# Find truly new messages
NEW_COUNT=0
NEWEST_UID=$LAST_UID
ALERT_LINES=()
while IFS= read -r MSG_UID; do
if [ "$MSG_UID" -gt "$LAST_UID" ]; then
NEW_COUNT=$((NEW_COUNT + 1))
if [ "$MSG_UID" -gt "$NEWEST_UID" ]; then
NEWEST_UID=$MSG_UID
fi
# Get message details
MSG=$(node scripts/imap.js fetch "$MSG_UID" 2>&1)
SUBJECT=$(echo "$MSG" | jq -r '.subject // "No subject"' 2>/dev/null)
FROM=$(echo "$MSG" | jq -r '.from // "Unknown sender"' 2>/dev/null)
ALERT_LINES+=("• **$SUBJECT**\n From: $FROM")
fi
done <<< "$NEW_UIDS"
# Update state
jq ".last_uid = $NEWEST_UID | .last_check = $(date +%s)" "$STATE_FILE" > "$STATE_FILE.tmp" && mv "$STATE_FILE.tmp" "$STATE_FILE"
# Send alert if new messages found
if [ "$NEW_COUNT" -gt 0 ]; then
ALERT_MSG="📬 **$NEW_COUNT new email(s) in inbox**:\n\n"
for LINE in "${ALERT_LINES[@]}"; do
ALERT_MSG+="$LINE\n\n"
done
ALERT_MSG+="— Krilly 🦀"
# Send via Telegram using gateway
curl -s -X POST "http://127.0.0.1:18789/api/message/send" \
-H "Content-Type: application/json" \
-d "{\"channel\": \"telegram\", \"to\": \"telegram:1793951355\", \"message\": $(echo "$ALERT_MSG" | jq -Rs .)}" \
> /dev/null 2>&1
echo "Alert sent for $NEW_COUNT new messages"
fi