一键导入
telegram
Send notifications and messages via Telegram bot API
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Send notifications and messages via Telegram bot API
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create new OpenCode agents with a gpt-5.2-codex default.
Create OpenCode custom commands for repeatable tasks.
Create targeted Cal links for specific people or teams
Use Chrome MCP to verify OpenWork UI flows, especially any feature that touches remote behavior. Triggers when user mentions: - "test with chrome mcp" - "ui verification" - "remote behavior test"
Start the OpenWork dev stack via Docker and verify real user flows via Chrome MCP. Triggers when user mentions: - "dev-up.sh" - "docker dev stack" - "verify in chrome mcp" - "test the real flow"
Run owpenbot/openwrk integration tests with Telegram test tokens. Triggers when user mentions: - "owpenbot tests" - "telegram test tokens" - "openwrk integration test"
| name | telegram |
| description | Send notifications and messages via Telegram bot API |
IMPORTANT: Before using any Telegram commands, source the local .env file:
source .skill.config
Credentials are stored in .skill.config (gitignored):
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=... # Default chat (legacy, still works)
Chat aliases are stored in telegram-chats.json (gitignored):
{
"chats": {
"default": { "id": "123456789", "name": "Personal", "description": "Default notifications" },
"alerts": { "id": "-100987654321", "name": "Alerts", "description": "Critical alerts" },
"house": { "id": "-4972420459", "name": "House Common", "description": "House group" }
}
}
jq -r '.chats.house.id' skills/telegram/telegram-chats.json
jq -r '.chats | to_entries[] | "\(.key): \(.value.name) (\(.value.id))"' skills/telegram/telegram-chats.json
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "text=Hello from OpenCode!"
source .skill.config && CHAT_ID=$(jq -r '.chats.house.id' skills/telegram/telegram-chats.json) && \
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=Hello House!"
source .skill.config && for chat in default house; do
CHAT_ID=$(jq -r ".chats.$chat.id" skills/telegram/telegram-chats.json)
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=Broadcast message!" &
done
wait
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "parse_mode=Markdown" \
-d "text=*Bold* and _italic_ and \`code\`"
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "parse_mode=HTML" \
-d "text=<b>Bold</b> and <i>italic</i> and <code>code</code>"
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "parse_mode=Markdown" \
-d "text=Check out [this deal](https://facebook.com/marketplace/item/123)"
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "parse_mode=Markdown" \
--data-urlencode "text=*New Deals Found*
1. \$50 - Vintage Poster [View](link1)
2. \$30 - Movie Poster [View](link2)"
source .skill.config && curl -s "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getMe" | jq
source .skill.config && echo "Token: ${TELEGRAM_BOT_TOKEN:0:10}... Chat: $TELEGRAM_CHAT_ID"
jq '.chats' skills/telegram/telegram-chats.json
\ before _, *, `, [ if they're literal--data-urlencode for messages with special chars- (group/channel)-100 for supergroups/newbotbot, e.g., "myopencode_bot")curl -s "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates" | jq '.result[0].message.chat.id'
curl -s "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates" | jq '.result[] | select(.message.chat.type != "private") | {title: .message.chat.title, id: .message.chat.id}'
Add to .skill.config:
TELEGRAM_BOT_TOKEN=your_token_here
TELEGRAM_CHAT_ID=your_default_chat_id_here
cp skills/telegram/telegram-chats.example.json skills/telegram/telegram-chats.json
Then edit telegram-chats.json to add your chats:
{
"chats": {
"default": {
"id": "YOUR_PERSONAL_CHAT_ID",
"name": "Personal",
"description": "My personal notifications"
},
"alerts": {
"id": "GROUP_CHAT_ID",
"name": "Alerts Group",
"description": "System alerts"
}
}
}
# Test default
source .skill.config && curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$TELEGRAM_CHAT_ID" \
-d "text=OpenCode connected!"
# Test named chat
source .skill.config && CHAT_ID=$(jq -r '.chats.house.id' skills/telegram/telegram-chats.json) && \
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=House chat connected!"
source .skill.config && curl -s "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates" | jq '.result[-1].message.chat'
telegram-chats.jsonsource .skill.config && curl -s "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates" | \
jq '[.result[].message.chat] | unique_by(.id) | .[] | {id, title: (.title // .first_name), type}'
For complex scripts, define a helper:
telegram_send() {
local chat_alias="${1:-default}"
local message="$2"
local parse_mode="${3:-Markdown}"
source .skill.config
local chat_id=$(jq -r ".chats.$chat_alias.id" skills/telegram/telegram-chats.json)
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$chat_id" \
-d "parse_mode=$parse_mode" \
--data-urlencode "text=$message"
}
# Usage:
telegram_send "house" "Hello from the house chat!"
telegram_send "bargains" "*New deal found!*" "Markdown"