配置Telegram通知Skill configure-telegram

这个技能允许用户通过自然语言交互配置Telegram bot通知,实现OMC在特定事件(如会话结束、需要用户输入或完成后台任务)时自动发送消息。关键词:Telegram配置、通知设置、自动化提醒、OMC集成、DevOps工具。

DevOps 0 次安装 0 次浏览 更新于 3/11/2026

name: 配置-telegram 描述: 通过自然语言配置Telegram bot通知 triggers:

  • “配置 telegram”
  • “设置 telegram”
  • “telegram 通知”
  • “telegram bot”

配置Telegram通知

设置Telegram通知,以便OMC在会话结束、需要输入或完成后台任务时向您发送消息。

这个技能如何工作

这是一个交互式、自然语言的配置技能。通过使用AskUserQuestion提问来引导用户完成设置。将结果写入 ~/.claude/.omc-config.json

步骤1:检测现有配置

CONFIG_FILE="$HOME/.claude/.omc-config.json"

if [ -f "$CONFIG_FILE" ]; then
  HAS_TELEGRAM=$(jq -r '.notifications.telegram.enabled // false' "$CONFIG_FILE" 2>/dev/null)
  CHAT_ID=$(jq -r '.notifications.telegram.chatId // empty' "$CONFIG_FILE" 2>/dev/null)
  PARSE_MODE=$(jq -r '.notifications.telegram.parseMode // "Markdown"' "$CONFIG_FILE" 2>/dev/null)

  if [ "$HAS_TELEGRAM" = "true" ]; then
    echo "EXISTING_CONFIG=true"
    echo "CHAT_ID=$CHAT_ID"
    echo "PARSE_MODE=$PARSE_MODE"
  else
    echo "EXISTING_CONFIG=false"
  fi
else
  echo "NO_CONFIG_FILE"
fi

如果找到现有配置,向用户显示当前配置并询问是否要更新或重新配置。

步骤2:创建Telegram Bot

如果用户没有bot,引导他们创建:

要设置Telegram通知,您需要一个Telegram bot token和您的chat ID。

创建BOT(如果您还没有):
1. 打开Telegram并搜索@BotFather
2. 发送 /newbot
3. 选择一个名称(例如,“我的OMC通知器”)
4. 选择一个用户名(例如,“my_omc_bot”)
5. BotFather会给您一个token,例如:123456789:ABCdefGHIjklMNOpqrsTUVwxyz

获取您的CHAT ID:
1. 与您的新bot开始聊天(发送 /start)
2. 访问:https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
3. 查找“chat”:{"id":YOUR_CHAT_ID}
   - 个人聊天ID是正数(例如,123456789)
   - 群组聊天ID是负数(例如,-1001234567890)

步骤3:收集Bot Token

使用AskUserQuestion:

问题: “粘贴您的Telegram bot token(来自@BotFather)”

用户将在“其他”字段中输入他们的token。

验证 token:

  • 必须匹配模式:digits:alphanumeric(例如,123456789:ABCdefGHI...
  • 如果无效,解释格式并再次询问

步骤4:收集Chat ID

使用AskUserQuestion:

问题: “粘贴您的Telegram chat ID(来自getUpdates API的数字)”

用户将在“其他”字段中输入他们的chat ID。

验证 chat ID:

  • 必须是一个数字(个人为正,群组为负)
  • 如果无效,提供帮助找到它:
# 帮助用户找到他们的chat ID
BOT_TOKEN="用户提供的TOKEN"
echo "正在获取最近消息以找到您的chat ID..."
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates" | jq '.result[-1].message.chat.id // .result[-1].message.from.id // "未找到消息 - 请先向您的bot发送 /start"'

步骤5:选择解析模式

使用AskUserQuestion:

问题: “您更喜欢哪种消息格式?”

选项:

  1. Markdown(推荐) - 使用Markdown语法实现粗体、斜体、代码块
  2. HTML - 使用HTML标签实现粗体、斜体、代码

步骤6:配置事件

使用AskUserQuestion并启用多选:

问题: “哪些事件应该触发Telegram通知?”

选项(multiSelect: true):

  1. 会话结束(推荐) - 当Claude会话完成时
  2. 需要输入 - 当Claude等待您的响应时(适合长时间运行的任务)
  3. 会话开始 - 当新会话开始时
  4. 会话继续 - 当持久模式保持会话活跃时

默认选择:session-end + ask-user-question。

步骤7:写入配置

读取现有配置,合并新的Telegram设置,并写回:

CONFIG_FILE="$HOME/.claude/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"

if [ -f "$CONFIG_FILE" ]; then
  EXISTING=$(cat "$CONFIG_FILE")
else
  EXISTING='{}'
fi

# BOT_TOKEN、CHAT_ID、PARSE_MODE从用户收集
echo "$EXISTING" | jq \
  --arg token "$BOT_TOKEN" \
  --arg chatId "$CHAT_ID" \
  --arg parseMode "$PARSE_MODE" \
  '.notifications = (.notifications // {enabled: true}) |
   .notifications.enabled = true |
   .notifications.telegram = {
     enabled: true,
     botToken: $token,
     chatId: $chatId,
     parseMode: $parseMode
   }' > "$CONFIG_FILE"

如果用户未选择所有事件,添加事件特定配置:

对于每个未选择的事件,禁用它:

# 示例:如果未选择session-start,禁用它
echo "$(cat "$CONFIG_FILE")" | jq \
  '.notifications.events = (.notifications.events // {}) |
   .notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"

步骤8:测试配置

写入配置后,提供发送测试通知的选项:

使用AskUserQuestion:

问题: “发送测试通知以验证设置?”

选项:

  1. 是,现在测试(推荐) - 向您的Telegram聊天发送测试消息
  2. 否,稍后测试 - 跳过测试

如果测试:

BOT_TOKEN="用户提供的TOKEN"
CHAT_ID="用户提供的CHAT_ID"
PARSE_MODE="Markdown"

RESPONSE=$(curl -s -w "
%{http_code}" \
  "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
  -d "chat_id=${CHAT_ID}" \
  -d "parse_mode=${PARSE_MODE}" \
  -d "text=OMC测试通知 - Telegram已配置!")

HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | head -1)

if [ "$HTTP_CODE" = "200" ]; then
  echo "测试通知发送成功!”
else
  echo "失败(HTTP $HTTP_CODE):"
  echo "$BODY" | jq -r '.description // "未知错误"' 2>/dev/null || echo "$BODY"
fi

报告成功或失败。常见问题:

  • 401 Unauthorized:Bot token无效
  • 400 Bad Request: chat not found:Chat ID错误,或用户未向bot发送 /start
  • 网络错误:检查到api.telegram.org的连接

步骤9:确认

显示最终配置摘要:

Telegram通知已配置!

  Bot:        @your_bot_username
  Chat ID:    123456789
  格式:       Markdown
  事件:       session-end, ask-user-question

配置已保存至: ~/.claude/.omc-config.json

您也可以通过环境变量设置这些:
  OMC_TELEGRAM_BOT_TOKEN=123456789:ABCdefGHI...
  OMC_TELEGRAM_CHAT_ID=123456789

重新配置:/oh-my-claudecode:configure-telegram
配置Discord:/oh-my-claudecode:configure-discord

环境变量替代方案

用户可以通过在shell配置文件中设置环境变量来完全跳过此向导:

export OMC_TELEGRAM_BOT_TOKEN="123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
export OMC_TELEGRAM_CHAT_ID="123456789"

环境变量会被通知系统自动检测,无需 .omc-config.json