phase0: Nachtmeldungen kommen wieder an, Sicherung mit Lucys Gedaechtnis, Token-Datei raus
Ampel / ampel (push) Successful in 26s
Ampel / ampel (push) Successful in 26s
- notify.sh sammelt nachts (00-07 Uhr) wie bisher, aber jetzt liefert mc2-morgenmeldung.timer um 07:00 alles als eine Telegram-Nachricht aus. Seit dem 21.08. las niemand die Warteschlange, alle Nachtmeldungen (auch die Sonntags-Updates) gingen verloren. Dringendes (-d, Betreff Alarm/Notfall, Text beginnt mit KRITISCH) geht sofort raus; autoupdate.sh markiert seine KRITISCH-Meldungen ausdruecklich. - backup.sh sichert zusaetzlich ~/.hermes/memories, SOUL.md, skills/, scripts/, den Box-Wart-Zustand (/srv/models/mc2-*.json), User-Units, llama-swap-Drop-ins und Lucys Stimmreferenz. restore.sh spielt Gedaechtnis und Zustand nur zurueck, wenn sie fehlen oder --mit-gedaechtnis gesetzt ist. - Update-Verlauf zaehlt die Morgenmeldung nicht als eigenen Lauf. - Waechter und Flugplan kennen den neuen Timer; deploy.sh installiert ihn. - .claude/settings.local.json aus dem Repo genommen (lokal behalten), .gitignore ergaenzt. - ruff wieder gruen (4x RUF100), AGENTS.md: Deploy macht git pull, Remote ist SSH. Tests: 86 gruen (neu: Nachtruhe, Dringendes, Morgenmeldung inkl. Telegram-Ausfall). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4a05bc2a05
commit
648be33d21
+37
-20
@@ -5,16 +5,30 @@
|
||||
#
|
||||
# Nutzung: notify.sh "Nachricht" (oder via stdin: echo msg | notify.sh)
|
||||
# notify.sh -s "[Update]" "Text" (Betreffzeile voranstellen)
|
||||
# Exit 0 = zugestellt (Telegram ODER Fallback-Log geschrieben).
|
||||
# notify.sh -d -s "[Update]" "…" (dringend: geht auch nachts sofort raus)
|
||||
#
|
||||
# Nachtruhe (User-Entscheid 24.09.2026): Zwischen 00:00 und 06:59 wird alles, was nicht dringend
|
||||
# ist, in der Nacht-Warteschlange gesammelt und um 07:00 von morgenmeldung.sh als EINE Meldung
|
||||
# verschickt. Dringend ist: -d, ein Betreff mit „Alarm“/„Notfall“ oder ein Text, der mit
|
||||
# „KRITISCH“ beginnt. (Bis 24.09. lieferte niemand die Warteschlange aus — seit dem 21.08.
|
||||
# gingen so alle Nachtmeldungen verloren, auch die Sonntags-Updates.)
|
||||
#
|
||||
# Exit 0 = zugestellt (Telegram, Fallback-Log oder Nacht-Warteschlange).
|
||||
# MC_NOTIFY_STRICT=1: Exit 1, wenn Telegram scheitert (für morgenmeldung.sh, damit nichts verloren geht).
|
||||
# Test-Schalter: MC_NOTIFY_STUNDE (Stunde vortäuschen), MC_NIGHT_QUEUE, MC_NOTIFY_HERMES (hermes-Befehl).
|
||||
set -uo pipefail
|
||||
|
||||
LOG="${MC_NOTIFY_LOG:-$HOME/mc2-notify.log}"
|
||||
NIGHT_QUEUE="${MC_NIGHT_QUEUE:-$HOME/.hermes/night-queue.txt}"
|
||||
HERMES_BIN="${MC_NOTIFY_HERMES:-hermes}"
|
||||
SUBJECT=""
|
||||
DRINGEND=0
|
||||
|
||||
while getopts ":s:" opt; do
|
||||
while getopts ":s:d" opt; do
|
||||
case "$opt" in
|
||||
s) SUBJECT="$OPTARG" ;;
|
||||
*) echo "usage: notify.sh [-s subject] <nachricht>" >&2; exit 2 ;;
|
||||
d) DRINGEND=1 ;;
|
||||
*) echo "usage: notify.sh [-d] [-s subject] <nachricht>" >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
@@ -41,28 +55,30 @@ PY
|
||||
)" >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# Nachtweiche: Zwischen 00:00 und 06:59 Uhr (inklusive) fangen wir Telegram-Nachrichten ab
|
||||
# und sammeln sie für den Morgen-Digest, ES SEI DENN es ist ein Alarm.
|
||||
HOUR="$(date +%H)"
|
||||
if [ "$HOUR" -ge 0 ] && [ "$HOUR" -lt 7 ]; then
|
||||
case "${SUBJECT,,}" in
|
||||
*alarm*|*notfall*)
|
||||
;; # Alarme gehen immer sofort durch
|
||||
*)
|
||||
# Sammeln für Morgen-Digest
|
||||
NIGHT_QUEUE="$HOME/.hermes/night-queue.txt"
|
||||
echo "- ${SUBJECT:+$SUBJECT: }$MSG" >> "$NIGHT_QUEUE"
|
||||
echo "$TS QUEUED für Morgen-Digest: $MSG" >> "$LOG"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
# Dringend ist, was nicht bis zum Morgen warten darf.
|
||||
case "${SUBJECT,,}" in
|
||||
*alarm*|*notfall*) DRINGEND=1 ;;
|
||||
esac
|
||||
case "$MSG" in
|
||||
KRITISCH*) DRINGEND=1 ;;
|
||||
esac
|
||||
|
||||
# Nachtruhe: 00:00–06:59 sammeln, außer es ist dringend. 10#… verhindert, dass „08“/„09“ als
|
||||
# Oktalzahl gelesen werden.
|
||||
HOUR="${MC_NOTIFY_STUNDE:-$(date +%H)}"
|
||||
if [ "$DRINGEND" != "1" ] && [ "$((10#$HOUR))" -lt 7 ]; then
|
||||
mkdir -p "$(dirname "$NIGHT_QUEUE")"
|
||||
printf -- '- %s%s\n' "${SUBJECT:+$SUBJECT: }" "$MSG" >> "$NIGHT_QUEUE"
|
||||
# Wortlaut „QUEUED für Morgen-Digest“ nicht ändern: services/update_verlauf.py liest ihn.
|
||||
echo "$TS QUEUED für Morgen-Digest: $MSG" >> "$LOG"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Primärweg: Telegram via hermes send (Login-Shell-PATH, falls aus Timer/cron aufgerufen).
|
||||
if [ -n "$SUBJECT" ]; then
|
||||
SEND_OUT="$(bash -lc 'hermes send --to telegram --subject "$1" -- "$2"' _ "$SUBJECT" "$MSG" 2>&1)"
|
||||
SEND_OUT="$(bash -lc '"$1" send --to telegram --subject "$2" -- "$3"' _ "$HERMES_BIN" "$SUBJECT" "$MSG" 2>&1)"
|
||||
else
|
||||
SEND_OUT="$(bash -lc 'hermes send --to telegram -- "$1"' _ "$MSG" 2>&1)"
|
||||
SEND_OUT="$(bash -lc '"$1" send --to telegram -- "$2"' _ "$HERMES_BIN" "$MSG" 2>&1)"
|
||||
fi
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$TS OK telegram: $MSG" >> "$LOG"
|
||||
@@ -73,4 +89,5 @@ fi
|
||||
echo "$TS FALLBACK (telegram fehlgeschlagen: $SEND_OUT): $MSG" >> "$LOG"
|
||||
printf '%s\n' "MC2-Meldung: ${SUBJECT:+$SUBJECT }$MSG" | wall 2>/dev/null || true
|
||||
echo "WARN: Telegram fehlgeschlagen, in $LOG protokolliert" >&2
|
||||
[ "${MC_NOTIFY_STRICT:-0}" = "1" ] && exit 1
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user