chore: initial commit
This commit is contained in:
163
manage_bot.sh
Executable file
163
manage_bot.sh
Executable file
@@ -0,0 +1,163 @@
|
||||
#!/bin/bash
|
||||
# Telegram Bot 管理脚本
|
||||
# 统一管理 integrated_bot_ai.py (使用 claude-agent-sdk)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
BOT_DIR="/home/atai/telegram-bot"
|
||||
BOT_SCRIPT="integrated_bot_ai.py"
|
||||
SCREEN_NAME="agent_bot"
|
||||
LOG_FILE="bot_agent_sdk.log"
|
||||
SYSTEMD_UNIT="telegram-bot.service"
|
||||
SYSTEMD_UNIT_PATH="/etc/systemd/system/${SYSTEMD_UNIT}"
|
||||
|
||||
# 环境变量(非 systemd 模式时使用)
|
||||
export ANTHROPIC_BASE_URL="http://202.79.167.23:3000/api"
|
||||
export ANTHROPIC_AUTH_TOKEN="cr_9792f20a98f055e204248a41f280780ca2fb8f08f35e60c785e5245653937e06"
|
||||
export ALL_PROXY="socks5://127.0.0.1:1080"
|
||||
|
||||
cd "$BOT_DIR" || exit 1
|
||||
|
||||
if [[ -f "$SYSTEMD_UNIT_PATH" ]]; then
|
||||
USE_SYSTEMD=1
|
||||
else
|
||||
USE_SYSTEMD=0
|
||||
fi
|
||||
|
||||
systemd_active() {
|
||||
sudo systemctl is-active --quiet "$SYSTEMD_UNIT"
|
||||
}
|
||||
|
||||
start_bot_legacy() {
|
||||
if screen -list | grep -q "$SCREEN_NAME"; then
|
||||
echo "⚠️ Bot 已经在运行中"
|
||||
screen -ls | grep "$SCREEN_NAME"
|
||||
else
|
||||
screen -dmS "$SCREEN_NAME" bash -lc "cd $BOT_DIR && exec ./run_bot_loop.sh"
|
||||
sleep 2
|
||||
if screen -list | grep -q "$SCREEN_NAME"; then
|
||||
echo "✅ Bot 已启动"
|
||||
screen -ls | grep "$SCREEN_NAME"
|
||||
echo ""
|
||||
echo "📝 查看日志: tail -f $BOT_DIR/$LOG_FILE"
|
||||
else
|
||||
echo "❌ 启动失败,请检查日志"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
stop_bot_legacy() {
|
||||
if screen -list | grep -q "$SCREEN_NAME"; then
|
||||
screen -S "$SCREEN_NAME" -X quit
|
||||
sleep 1
|
||||
echo "✅ Bot 已停止"
|
||||
else
|
||||
echo "⚠️ Bot 没有运行"
|
||||
fi
|
||||
}
|
||||
|
||||
case "${1:-status}" in
|
||||
start)
|
||||
echo "🚀 启动 Telegram Bot..."
|
||||
if [[ $USE_SYSTEMD -eq 1 ]]; then
|
||||
if systemd_active; then
|
||||
echo "⚠️ systemd 服务已在运行"
|
||||
else
|
||||
sudo systemctl start "$SYSTEMD_UNIT"
|
||||
sleep 2
|
||||
if systemd_active; then
|
||||
echo "✅ systemd 已启动机器人"
|
||||
else
|
||||
echo "❌ 启动失败,请查看: sudo journalctl -u $SYSTEMD_UNIT"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
start_bot_legacy
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
echo "🛑 停止 Telegram Bot..."
|
||||
if [[ $USE_SYSTEMD -eq 1 ]]; then
|
||||
if systemd_active; then
|
||||
sudo systemctl stop "$SYSTEMD_UNIT"
|
||||
echo "✅ systemd 已停止机器人"
|
||||
else
|
||||
echo "⚠️ systemd 服务未运行"
|
||||
fi
|
||||
else
|
||||
stop_bot_legacy
|
||||
fi
|
||||
;;
|
||||
restart)
|
||||
echo "🔄 重启 Telegram Bot..."
|
||||
if [[ $USE_SYSTEMD -eq 1 ]]; then
|
||||
sudo systemctl restart "$SYSTEMD_UNIT"
|
||||
sleep 2
|
||||
if systemd_active; then
|
||||
echo "✅ systemd 重启完成"
|
||||
else
|
||||
echo "❌ 重启失败,请检查 systemd 日志"
|
||||
fi
|
||||
else
|
||||
stop_bot_legacy
|
||||
sleep 2
|
||||
start_bot_legacy
|
||||
fi
|
||||
;;
|
||||
status)
|
||||
echo "📊 Bot 状态检查..."
|
||||
echo ""
|
||||
if [[ $USE_SYSTEMD -eq 1 ]]; then
|
||||
sudo systemctl status "$SYSTEMD_UNIT" --no-pager
|
||||
echo ""
|
||||
fi
|
||||
if screen -list | grep -q "$SCREEN_NAME"; then
|
||||
echo "✅ Screen 会话运行中"
|
||||
screen -ls | grep "$SCREEN_NAME"
|
||||
else
|
||||
echo "❌ 未检测到 Screen 会话"
|
||||
fi
|
||||
echo ""
|
||||
echo "最近日志:"
|
||||
tail -20 "$BOT_DIR/$LOG_FILE" || echo "暂无日志"
|
||||
;;
|
||||
logs)
|
||||
echo "📝 实时日志 (Ctrl+C 退出)..."
|
||||
tail -f "$BOT_DIR/$LOG_FILE"
|
||||
;;
|
||||
attach)
|
||||
echo "🔗 进入 Bot Screen 会话 (Ctrl+A, D 退出)..."
|
||||
screen -r "$SCREEN_NAME"
|
||||
;;
|
||||
info)
|
||||
echo "ℹ️ Bot 信息"
|
||||
echo "============================================"
|
||||
echo "脚本: $BOT_SCRIPT"
|
||||
echo "位置: $BOT_DIR"
|
||||
echo "日志: $LOG_FILE"
|
||||
echo "Screen: $SCREEN_NAME"
|
||||
if [[ $USE_SYSTEMD -eq 1 ]]; then
|
||||
echo "服务: $SYSTEMD_UNIT (systemd)"
|
||||
else
|
||||
echo "服务: Screen 模式"
|
||||
fi
|
||||
echo "使用: claude-agent-sdk (Python)"
|
||||
echo "模型: claude-sonnet-4-5-20250929"
|
||||
echo "============================================"
|
||||
;;
|
||||
*)
|
||||
echo "Telegram Bot 管理脚本"
|
||||
echo ""
|
||||
echo "用法: $0 {start|stop|restart|status|logs|attach|info}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动 Bot"
|
||||
echo " stop - 停止 Bot"
|
||||
echo " restart - 重启 Bot"
|
||||
echo " status - 查看运行状态"
|
||||
echo " logs - 实时查看日志"
|
||||
echo " attach - 进入 Screen 会话"
|
||||
echo " info - 显示 Bot 信息"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user