Claude Code Telegram Bot

Claude Code

  1. 安装 Homebrew(推荐国内镜像)
1
2
# 打开终端,执行以下命令使用国内镜像安装:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  1. 安装 nvm(Node Version Manager)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 安装 nvm
brew install nvm

# 创建 nvm 目录
mkdir -p ~/.nvm

# 配置环境变量(编辑 ~/.zshrc)
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
echo '[ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh"' >> ~/.zshrc
echo '[ -s "$(brew --prefix nvm)/etc/bash_completion.d/nvm" ] && \. "$(brew --prefix nvm)/etc/bash_completion.d/nvm"' >> ~/.zshrc

# 使配置生效
source ~/.zshrc

# 验证安装
nvm --version
  1. 安装 Node.js(推荐 LTS 版本)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 安装最新 LTS 版本(推荐)
nvm install --lts

# 或安装指定版本(如 Node.js 20.x)
nvm install 20

# 设置为默认版本
nvm alias default 20

# 验证安装
node --version
npm --version
  1. 安装 Claude CLI
1
2
3
4
5
# 全局安装 Claude CLI
npm install -g @anthropic-ai/claude-code

# 验证安装
claude --version

Python

方案一:Python 3.11+

1
2
3
4
5
# 下载
https://www.python.org/downloads/

# 查看 Python 3 版本
python3 --version

方案二:pyenv

  1. 安装 pyenv(如果还没装)
1
2
# 使用 Homebrew 安装
brew install pyenv

  1. 配置 shell(zsh)
1
2
3
4
5
6
7
# 添加到 ~/.zshrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

# 重新加载配置
source ~/.zshrc

  1. 安装并设置 Python 版本
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 查看可安装的版本
pyenv install --list | grep "3."

# 安装一个版本(例如 3.11)
pyenv install 3.11.9

# 全局默认版本
pyenv global 3.11.9

# 或者为当前目录设置特定版本
cd /xxx
pyenv local 3.11.9

  1. 为项目创建虚拟环境
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd /xxx

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 使用完后退出
deactivate

Claude Code Telegram Bot

地址:https://github.com/RichardAtCT/claude-code-telegram

安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 查看远程仓库有哪些标签
git ls-remote --tags https://github.com/RichardAtCT/claude-code-telegram.git

# 克隆指定标签版本
git clone --branch v1.5.0 https://github.com/RichardAtCT/claude-code-telegram.git

cd claude-code-telegram

# 安装 Poetry
pip3 install poetry
poetry --version

make dev  # requires Poetry
1
poetry install

这一步会:

  • 创建虚拟环境
  • 安装 pyproject.toml 里的依赖
  • 安装当前项目
  • 生成 CLI 命令

配置

1
2
cp .env.example .env
# Edit .env with your settings:

最低要求:

TELEGRAM_BOT_TOKEN=1234567890:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_BOT_USERNAME=my_claude_bot
APPROVED_DIRECTORY=/Users/yourname/projects
ALLOWED_USERS=123456789  # Your Telegram user ID

运行

1
2
make run          # Production
make run-debug    # With debug logging

报错:Not logged in · Please run /login

修改配置文件 USE_SDK=false 让 Bot 直接调用 CLI

这样流程就变成:

1
2
3
4
5
6
7
Telegram
Bot
claude CLI
Claude Code

而不是:

1
2
3
4
5
6
7
Telegram
Bot
Anthropic SDK
API

问题:claude-code-telegram Bot 卡死

有时使用 claude-code-telegram 运行 Telegram Bot 时, 程序会在一段时间后停止输出 getUpdates 日志,导致 Bot 不再响应消息。

为了保证 Bot 长期稳定运行,可以使用:

  • PM2 管理进程
  • cron watchdog 检测日志心跳并自动重启

整体思路:

PM2 运行 Bot
      ↓
cron 定时执行 watchdog
      ↓
如果日志长时间不更新
      ↓
自动 pm2 restart

这样 Bot 即使卡死,也能自动恢复。


  1. 使用 PM2 启动 Bot

进入项目目录:

1
cd ~/xxx/claude-code-telegram

启动 Bot:

1
2
3
pm2 start "make run" \
  --name claude-telegram \
  --cwd ~/xxx/claude-code-telegram

确认进程是否运行:

1
pm2 list

如果正常,会看到:

name               status
claude-telegram    online

  1. 找到 PM2 日志路径

PM2 默认日志目录:

~/.pm2/logs/

查看:

1
ls ~/.pm2/logs

通常会看到:

claude-telegram-out.log
claude-telegram-error.log

其中:

  • out.log → 程序正常输出日志
  • error.log → 程序错误日志

我们后面的 watchdog 会监控 out.log


  1. 创建 Watchdog 脚本

创建脚本:

1
nano ~/xxx/claude-code-telegram/claude-bot-watchdog.sh

写入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

# 手动加载 nvm 环境
export NVM_DIR="$HOME/.nvm"
source "$NVM_DIR/nvm.sh"

PM2="/xxx/pm2"

BASE="/xxx/claude-code-telegram"

LOG="$HOME/.pm2/logs/claude-telegram-out.log"
WATCHDOG_LOG="$BASE/watchdog.log"

# 如果日志不存在直接退出
if [ ! -f "$LOG" ]; then
  exit 0
fi

NOW=$(date +%s)
MOD=$(stat -f %m "$LOG")

DIFF=$((NOW - MOD))

# 如果日志 5 分钟没有更新,重启 Bot
if [ $DIFF -gt 300 ]; then
    echo "$(date) Bot log stopped ($DIFF sec). Restarting..." >> "$WATCHDOG_LOG"
    $PM2 restart claude-telegram
fi

保存并退出:

Ctrl + O
Enter
Ctrl + X

  1. 给脚本执行权限
1
chmod +x ~/xxx/claude-code-telegram/claude-bot-watchdog.sh

  1. 添加定时任务

打开 cron:

1
crontab -e

在最后添加一行:

1
*/5 * * * * /bin/bash /xxx/claude-code-telegram/claude-bot-watchdog.sh >> /xxx/claude-code-telegram/cron.log 2>&1

含义:

每 5 分钟执行一次 watchdog

所有输出都会记录到 cron.log

验证 cron 配置:

1
crontab -l

  1. 最终目录结构

完成后项目目录会变成:

claude-code-telegram
├─ claude-bot-watchdog.sh   # 自动重启脚本
├─ watchdog.log             # watchdog 检测到卡死时记录
├─ cron.log                 # cron 执行脚本日志

  1. Watchdog 工作原理

Bot 正常运行时,会持续输出类似日志:

HTTP Request: POST https://api.telegram.org/.../getUpdates

如果 Bot 卡死:

getUpdates
getUpdates
getUpdates
(停止)

watchdog 会检测:

日志文件最后修改时间

如果 超过 5 分钟没有更新

pm2 restart claude-telegram

Bot 会自动恢复。


  1. 推荐优化

为了更快恢复,可以把 cron 改为 2 分钟检测一次

*/2 * * * *

这样 Bot 最多 2 分钟就能自动恢复

后台运行

如果你不想一直占着一个终端,可以用后台运行

最推荐:pm2(长期运行 Bot)

如果你的 Bot 要 一直运行,我最推荐 pm2。

优点:

  • 进程崩溃自动重启
  • 可以查看日志
  • 支持开机自启
  • 专门为服务设计
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装
npm install -g pm2

# 启动
pm2 start "make run" --name claude-telegram

# 查看状态
pm2 list

# 查看日志
pm2 logs claude-telegram

# 重启
pm2 restart claude-telegram

第二推荐:tmux(开发阶段最好)

如果你 还在调试 Telegram Bot,推荐 tmux。

优点:

  • 可以实时看到输出
  • 不怕 SSH 断开
  • 操作简单
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 安装
brew install tmux

# 启动
tmux
make run

# 退出但保持运行
Ctrl+B 然后 D

# 重新进入
tmux attach

skill

News Aggregator Skill

地址:https://github.com/cclank/news-aggregator-skill

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 将 Skill 添加到您的 Agent
git clone git@github.com:cclank/news-aggregator-skill.git YourProject/.claude/skills/news-aggregator-skill

# 1. 进入已安装的 Skill 目录,执行依赖安装
cd /xxx/.claude/skills/news-aggregator-skill                                                                
                                                                                                                        
# 2. 创建虚拟环境                                                                                                     
python3 -m venv .venv                                                                                                 

# 3. 激活并安装依赖
source .venv/bin/activate
pip install -r requirements.txt

# 安装 Playwright(如果需要用到 HF Papers 和 Ben's Bites)
pip install playwright
playwright install chromium

# 4. 退出虚拟环境(可选)
deactivate

将 SKILL.md 中的所有命令从:

1
2
python3 scripts/fetch_news.py ...
python3 scripts/daily_briefing.py ...

改为:

1
2
.venv/bin/python3 scripts/fetch_news.py ...
.venv/bin/python3 scripts/daily_briefing.py ...