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:
问题: “您更喜欢哪种消息格式?”
选项:
- Markdown(推荐) - 使用Markdown语法实现粗体、斜体、代码块
- HTML - 使用HTML标签实现粗体、斜体、代码
步骤6:配置事件
使用AskUserQuestion并启用多选:
问题: “哪些事件应该触发Telegram通知?”
选项(multiSelect: true):
- 会话结束(推荐) - 当Claude会话完成时
- 需要输入 - 当Claude等待您的响应时(适合长时间运行的任务)
- 会话开始 - 当新会话开始时
- 会话继续 - 当持久模式保持会话活跃时
默认选择: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:
问题: “发送测试通知以验证设置?”
选项:
- 是,现在测试(推荐) - 向您的Telegram聊天发送测试消息
- 否,稍后测试 - 跳过测试
如果测试:
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。