1352
This commit is contained in:
1 parent
f9076df6e8
commit
500e1a5a42
2 files changed
+118
-3
No files matched your search
@@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 诊断 Bot 启动问题
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "==================================="
|
||||||
|
echo " Bot 启动诊断"
|
||||||
|
echo "==================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. 检查 instrumentation 文件
|
||||||
|
echo "1. 检查 instrumentation 文件..."
|
||||||
|
if [ -f "src/instrumentation.ts" ]; then
|
||||||
|
echo "✓ src/instrumentation.ts 存在"
|
||||||
|
elif [ -f "src/instrumentation.js" ]; then
|
||||||
|
echo "✓ src/instrumentation.js 存在"
|
||||||
|
elif [ -f "instrumentation.ts" ]; then
|
||||||
|
echo "✓ instrumentation.ts 存在(根目录)"
|
||||||
|
elif [ -f "instrumentation.js" ]; then
|
||||||
|
echo "✓ instrumentation.js 存在(根目录)"
|
||||||
|
else
|
||||||
|
echo "✗ 未找到 instrumentation 文件!"
|
||||||
|
echo " 应该在: src/instrumentation.ts 或 instrumentation.ts"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 检查 register 函数导出
|
||||||
|
echo ""
|
||||||
|
echo "2. 检查 register 函数..."
|
||||||
|
if grep -q "export async function register" src/instrumentation.ts 2>/dev/null || \
|
||||||
|
grep -q "export async function register" src/instrumentation.js 2>/dev/null || \
|
||||||
|
grep -q "export async function register" instrumentation.ts 2>/dev/null || \
|
||||||
|
grep -q "export async function register" instrumentation.js 2>/dev/null; then
|
||||||
|
echo "✓ register 函数已导出"
|
||||||
|
else
|
||||||
|
echo "✗ 未找到 export async function register() 导出"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. 检查 next.config.ts
|
||||||
|
echo ""
|
||||||
|
echo "3. 检查 next.config.ts..."
|
||||||
|
if grep -q "instrumentationHook" next.config.ts 2>/dev/null; then
|
||||||
|
echo "⚠ 发现 instrumentationHook 配置(Next.js 16 不需要,应该移除)"
|
||||||
|
else
|
||||||
|
echo "✓ 配置文件正常"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. 检查 bot 入口文件
|
||||||
|
echo ""
|
||||||
|
echo "4. 检查 bot 启动文件..."
|
||||||
|
if [ -f "src/lib/bot/index.ts" ]; then
|
||||||
|
echo "✓ src/lib/bot/index.ts 存在"
|
||||||
|
if grep -q "export async function startBot" src/lib/bot/index.ts; then
|
||||||
|
echo "✓ startBot 函数已导出"
|
||||||
|
else
|
||||||
|
echo "✗ 未找到 startBot 导出"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "✗ src/lib/bot/index.ts 不存在"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. 检查环境变量
|
||||||
|
echo ""
|
||||||
|
echo "5. 检查环境变量..."
|
||||||
|
if [ -f ".env" ]; then
|
||||||
|
if grep -q "TG_BOT_TOKEN=" .env && ! grep -q "TG_BOT_TOKEN=$" .env; then
|
||||||
|
echo "✓ TG_BOT_TOKEN 已配置"
|
||||||
|
else
|
||||||
|
echo "⚠ TG_BOT_TOKEN 未配置或为空"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -q "TG_ALLOWED_CHAT_IDS=" .env && ! grep -q "TG_ALLOWED_CHAT_IDS=$" .env; then
|
||||||
|
echo "✓ TG_ALLOWED_CHAT_IDS 已配置"
|
||||||
|
else
|
||||||
|
echo "⚠ TG_ALLOWED_CHAT_IDS 未配置或为空"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep -q "ARTALK_SERVER=" .env && ! grep -q "ARTALK_SERVER=$" .env; then
|
||||||
|
echo "✓ ARTALK_SERVER 已配置"
|
||||||
|
else
|
||||||
|
echo "⚠ ARTALK_SERVER 未配置或为空"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "⚠ .env 文件不存在"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 6. 检查容器状态
|
||||||
|
echo ""
|
||||||
|
echo "6. 检查容器状态..."
|
||||||
|
if command -v docker &> /dev/null; then
|
||||||
|
if docker compose ps 2>/dev/null | grep -q "Up"; then
|
||||||
|
echo "✓ 容器正在运行"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "7. 检查容器日志..."
|
||||||
|
echo "--- 最近的日志 ---"
|
||||||
|
docker compose logs --tail 30 2>&1 | grep -E "\[instrumentation\]|\[bot\]|\[comment-notify\]|error" || echo "未找到相关日志"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "✗ 容器未运行"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "⚠ docker 命令不可用"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "==================================="
|
||||||
|
echo " 诊断完成"
|
||||||
|
echo "==================================="
|
||||||
|
echo ""
|
||||||
@@ -1,8 +1,14 @@
|
|||||||
export async function register() {
|
export async function register() {
|
||||||
if (process.env.NEXT_RUNTIME === "nodejs") {
|
// Next.js instrumentation hook - 在服务器启动时执行
|
||||||
|
console.log("[instrumentation] register() called, NEXT_RUNTIME:", process.env.NEXT_RUNTIME);
|
||||||
|
|
||||||
|
// 只在 Node.js 环境运行(Docker 部署,非 Edge Runtime)
|
||||||
|
try {
|
||||||
const { startBot } = await import("@/lib/bot");
|
const { startBot } = await import("@/lib/bot");
|
||||||
startBot().catch((e) => {
|
console.log("[instrumentation] starting bot...");
|
||||||
|
await startBot();
|
||||||
|
console.log("[instrumentation] bot started successfully");
|
||||||
|
} catch (e) {
|
||||||
console.error("[instrumentation] bot startup failed:", e);
|
console.error("[instrumentation] bot startup failed:", e);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user