Fix Telegram bot deploy receiver cleanup

This commit is contained in:
2569718930@qq.com
2026-06-26 21:16:17 +08:00
parent 1d11a5cbc6
commit d7ab68182e
3 changed files with 39 additions and 2 deletions
+9 -1
View File
@@ -3,7 +3,15 @@ $PROJECT = "/root/PolyWeather"
Write-Host "🚀 Deploying to $VPS..." -ForegroundColor Cyan
ssh $VPS "cd $PROJECT && git pull && docker compose up -d --build"
ssh $VPS @"
cd $PROJECT || exit 1
git pull || exit 1
docker compose stop polyweather || true
pkill -TERM -f 'python(3)? .*bot_[l]istener\.py' || true
sleep 2
pkill -KILL -f 'python(3)? .*bot_[l]istener\.py' || true
docker compose up -d --build
"@
Write-Host "✅ Deploy complete. Checking health..." -ForegroundColor Green
Start-Sleep 8
+19
View File
@@ -143,6 +143,24 @@ read_env_file_value() {
' .env | tail -n 1
}
stop_existing_bot_receivers() {
echo "Stopping existing Telegram bot receivers..."
docker compose stop polyweather || true
local legacy_pattern='python(3)? .*bot_[l]istener\.py'
if pgrep -af "$legacy_pattern" >/dev/null 2>&1; then
echo "Stopping legacy host bot_listener.py processes..."
pkill -TERM -f "$legacy_pattern" || true
sleep 3
if pgrep -af "$legacy_pattern" >/dev/null 2>&1; then
echo "Force-stopping legacy host bot_listener.py processes..."
pkill -KILL -f "$legacy_pattern" || true
fi
else
echo "No legacy host bot_listener.py process found"
fi
}
resolve_env_value() {
local primary_key="$1"
local fallback_key="${2:-}"
@@ -175,6 +193,7 @@ if [ -n "$resolved_supabase_anon_key" ]; then
else
unset SUPABASE_ANON_KEY
fi
stop_existing_bot_receivers
pull_ok=0
for pull_attempt in $(seq 1 6); do
docker compose pull && pull_ok=1 && break
+11 -1
View File
@@ -185,11 +185,21 @@ def test_bindtopic_rejects_non_admin(monkeypatch):
assert "管理员" in bot.replies[0]["text"]
def test_start_bind_token_binds_telegram_to_web_account():
def test_start_bind_token_binds_telegram_to_web_account(monkeypatch):
import src.bot.handlers.basic as basic
bot = DummyBot()
consumed = []
bound = []
monkeypatch.setattr(
basic,
"TelegramGroupPricing",
lambda *_args, **_kwargs: (_ for _ in ()).throw(
AssertionError("web bind tokens must not require Telegram group membership")
),
)
def _consume(token):
consumed.append(token)
return {