NanoBot / start.sh
naimulislam999's picture
Create start.sh
6d71fa9 verified
Raw
History Blame Contribute Delete
3.84 kB
#!/bin/bash
set -e
echo ">>> [1/4] Patching nanobot and ptb internals for transparent relay..."
NANOBOT_PATH=$(python3 -c "import nanobot, os; print(os.path.dirname(nanobot.__file__))")
echo " nanobot found at: $NANOBOT_PATH"
PATCHED=0
while IFS= read -r -d '' f; do
if grep -q "api\.telegram\.org" "$f"; then
sed -i 's|https://api\.telegram\.org|https://relay.cryptoisfuture.site|g' "$f"
echo " Patched: $f"
PATCHED=$((PATCHED + 1))
fi
done < <(find "$NANOBOT_PATH" -name "*.py" -print0)
PTB_PATH=$(python3 -c "import telegram, os; print(os.path.dirname(telegram.__file__))" 2>/dev/null || echo "")
if [ -n "$PTB_PATH" ]; then
while IFS= read -r -d '' f; do
if grep -q "api\.telegram\.org" "$f"; then
sed -i 's|https://api\.telegram\.org|https://relay.cryptoisfuture.site|g' "$f"
echo " Patched (ptb): $f"
PATCHED=$((PATCHED + 1))
fi
done < <(find "$PTB_PATH" -name "*.py" -print0)
fi
echo " Total files patched: $PATCHED"
echo ">>> [2/4] Injecting secrets from environment into config.json..."
python3 -c "
import json, os
cfg_path = os.path.expanduser('~/.nanobot/config.json')
with open(cfg_path) as f:
cfg = json.load(f)
bot_token = os.environ.get('TELEGRAM_BOT_TOKEN')
if bot_token:
cfg['channels']['telegram']['token'] = bot_token.strip().strip('\"').strip('\'')
allow_from = os.environ.get('TELEGRAM_ALLOW_FROM')
if allow_from:
cfg['channels']['telegram']['allowFrom'] = [x.strip() for x in allow_from.split(',')]
api_key = os.environ.get('LLM_API_KEY')
api_base = os.environ.get('LLM_BASE_URL')
model = os.environ.get('LLM_MODEL')
if api_key:
cfg['providers']['custom']['apiKey'] = api_key.strip().strip('\"').strip('\'')
if api_base:
cfg['providers']['custom']['apiBase'] = api_base.strip().strip('\"').strip('\'')
if model:
cfg['agents']['defaults']['model'] = model.strip().strip('\"').strip('\'')
with open(cfg_path, 'w') as f:
json.dump(cfg, f, indent=2)
print('Config written successfully.')
"
echo ">>> [3/4] Diagnosing Telegram Connection via Transparent Relay..."
python3 -c "
import urllib.request, json, os, urllib.error
cfg_path = os.path.expanduser('~/.nanobot/config.json')
try:
cfg = json.load(open(cfg_path))
token = cfg['channels']['telegram']['token']
except Exception as e:
print('Could not read token from config:', e)
exit(0)
# Notice the clean URL structure here
base_url = f'https://relay.cryptoisfuture.site/bot{token}'
print('1. Verifying token via getMe...')
try:
req = urllib.request.Request(f'{base_url}/getMe', headers={'User-Agent': 'Mozilla/5.0'})
res = urllib.request.urlopen(req, timeout=10)
print(' Success:', res.read().decode('utf-8'))
except urllib.error.HTTPError as e:
print(f' HTTP Error {e.code}:', e.read().decode('utf-8'))
except Exception as e:
print(' Error:', e)
print('2. Forcing Webhook deletion and dropping pending updates...')
try:
req = urllib.request.Request(f'{base_url}/deleteWebhook?drop_pending_updates=True', headers={'User-Agent': 'Mozilla/5.0'})
res = urllib.request.urlopen(req, timeout=10)
print(' Success:', res.read().decode('utf-8'))
except urllib.error.HTTPError as e:
print(f' HTTP Error {e.code}:', e.read().decode('utf-8'))
except Exception as e:
print(' Error:', e)
"
echo ">>> [4/4] Starting HF health-check server and nanobot gateway..."
python3 -c "
from http.server import HTTPServer, BaseHTTPRequestHandler
class HealthHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'nanobot is running')
def log_message(self, *args):
pass
print('Health-check server started on port 7860')
HTTPServer(('0.0.0.0', 7860), HealthHandler).serve_forever()
" &
sleep 2
exec nanobot gateway