diff --git a/scripts/wire_wizard_telegram_bots.sh b/scripts/wire_wizard_telegram_bots.sh new file mode 100755 index 0000000..c3ee8a1 --- /dev/null +++ b/scripts/wire_wizard_telegram_bots.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ "$#" -ne 2 ]; then + echo "usage: $0 " >&2 + exit 1 +fi + +EZRA_TOKEN="$1" +BEZALEL_TOKEN="$2" +GROUP_ID='-1003664764329' +GROUP_NAME='Timmy Time' +ALLOWED='7635059073' + +ssh root@143.198.27.163 "python3 - <<'PY' +from pathlib import Path +p = Path('/root/wizards/ezra/home/.env') +text = p.read_text() if p.exists() else '' +lines = [line for line in text.splitlines() if not line.startswith('TELEGRAM_')] +lines += [ + 'TELEGRAM_BOT_TOKEN=${EZRA_TOKEN}', + 'TELEGRAM_HOME_CHANNEL=${GROUP_ID}', + 'TELEGRAM_HOME_CHANNEL_NAME=${GROUP_NAME}', + 'TELEGRAM_ALLOWED_USERS=${ALLOWED}', +] +p.write_text('\n'.join(lines) + '\n') +PY +systemctl restart hermes-ezra.service openclaw-ezra.service" + +ssh root@67.205.155.108 "python3 - <<'PY' +from pathlib import Path +p = Path('/root/wizards/bezalel/home/.env') +text = p.read_text() if p.exists() else '' +lines = [line for line in text.splitlines() if not line.startswith('TELEGRAM_')] +lines += [ + 'TELEGRAM_BOT_TOKEN=${BEZALEL_TOKEN}', + 'TELEGRAM_HOME_CHANNEL=${GROUP_ID}', + 'TELEGRAM_HOME_CHANNEL_NAME=${GROUP_NAME}', + 'TELEGRAM_ALLOWED_USERS=${ALLOWED}', +] +p.write_text('\n'.join(lines) + '\n') +PY +systemctl restart hermes-bezalel.service" + +echo 'Wizard Telegram bot tokens installed and services restarted.' diff --git a/specs/wizard-telegram-bot-cutover.md b/specs/wizard-telegram-bot-cutover.md new file mode 100644 index 0000000..89c4a37 --- /dev/null +++ b/specs/wizard-telegram-bot-cutover.md @@ -0,0 +1,116 @@ +# Wizard Telegram Bot Cutover + +Purpose: +Finish the last mile for Ezra and Bezalel entering the `Timmy Time` Telegram group as distinct bots. + +## Current truth + +Done: +- Ezra house exists on `143.198.27.163` +- Bezalel house exists on `67.205.155.108` +- both Hermes API health endpoints answered locally +- Timmy Time Telegram home channel is known: + - group id: `-1003664764329` + - name: `Timmy Time` + +Blocked: +- new bot creation still requires BotFather through Alexander's real Telegram user session +- there is no console-provable BotFather automation path available from the harness yet + +## Recommended bot identities + +### Ezra bot +- display name: `Ezra` +- preferred username candidate: `HermesEzraBot` +- fallback username candidates: + - `HermesEzraWizardBot` + - `EzraTimmyBot` + +### Bezalel bot +- display name: `Bezalel` +- preferred username candidate: `HermesBezalelBot` +- fallback username candidates: + - `HermesBezalelWizardBot` + - `BezalelTimmyBot` + +## BotFather sequence + +Run this from Alexander's Telegram user account with `@BotFather`. + +For Ezra: +1. `/newbot` +2. name: `Ezra` +3. username: try `HermesEzraBot` +4. save returned token securely + +For Bezalel: +1. `/newbot` +2. name: `Bezalel` +3. username: try `HermesBezalelBot` +4. save returned token securely + +Optional cleanup: +- `/setdescription` +- `/setabouttext` +- `/setuserpic` + +Suggested about text: +- Ezra: `Archivist wizard house under Timmy's sovereignty.` +- Bezalel: `Artificer wizard house under Timmy's sovereignty.` + +## Required group step + +After creation, add both bots to the `Timmy Time` group and grant permission to post. + +## Wire-up targets + +### Ezra host +- host: `143.198.27.163` +- hermes home: `/root/wizards/ezra/home/.env` +- service: `hermes-ezra.service` +- openclaw sidecar: `openclaw-ezra.service` + +### Bezalel host +- host: `67.205.155.108` +- hermes home: `/root/wizards/bezalel/home/.env` +- service: `hermes-bezalel.service` + +## Environment entries to add + +### Ezra +```env +TELEGRAM_BOT_TOKEN= +TELEGRAM_HOME_CHANNEL=-1003664764329 +TELEGRAM_HOME_CHANNEL_NAME=Timmy Time +TELEGRAM_ALLOWED_USERS=7635059073 +``` + +### Bezalel +```env +TELEGRAM_BOT_TOKEN= +TELEGRAM_HOME_CHANNEL=-1003664764329 +TELEGRAM_HOME_CHANNEL_NAME=Timmy Time +TELEGRAM_ALLOWED_USERS=7635059073 +``` + +## Restart commands + +### Ezra +```bash +ssh root@143.198.27.163 'systemctl restart hermes-ezra.service openclaw-ezra.service' +``` + +### Bezalel +```bash +ssh root@67.205.155.108 'systemctl restart hermes-bezalel.service' +``` + +## Acceptance proof + +The cutover is complete only when all are true: +1. Ezra bot is visible in the group +2. Bezalel bot is visible in the group +3. Timmy bot is present in the group +4. Alexander posts one message in the group +5. Timmy, Ezra, and Bezalel each reply as distinct bots +6. logs or API output prove each reply came from the correct house