Fishjam Python Server SDK
software-mansion-labs/skills
Python server SDK for Fishjam — backends that create rooms, mint peer tokens, receive server notifications, and run voice agents.
Chinese-language guide to building on Telegram: bots through the Bot API, Mini Apps in JavaScript and custom clients through TDLib, with Python examples.
SKILL.md written in Chinese; this summary is our English description.
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install 2025Emma/vibe-coding-cn telegram-dev --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .claude/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .claude/skills/telegram-dev && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .claude/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-devType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install 2025Emma/vibe-coding-cn telegram-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .agents/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .agents/skills/telegram-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .agents/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install 2025Emma/vibe-coding-cn telegram-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .cursor/skills/telegram-dev && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .cursor/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/2025Emma/vibe-coding-cn.git --path i18n/zh/skills/telegram-dev--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install 2025Emma/vibe-coding-cn telegram-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .gemini/skills/telegram-dev && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .gemini/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install 2025Emma/vibe-coding-cn telegram-devInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .github/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .github/skills/telegram-dev && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .github/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install 2025Emma/vibe-coding-cn telegram-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/2025Emma/vibe-coding-cn.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/i18n/zh/skills/telegram-dev .opencode/skills/telegram-dev && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "telegram-dev" agent skill from https://github.com/2025Emma/vibe-coding-cn/tree/main/i18n/zh/skills/telegram-dev into .opencode/skills/telegram-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "telegram-dev", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
telegram-devChinese-language guide to building on Telegram: bots through the Bot API, Mini Apps in JavaScript and custom clients through TDLib, with Python examples.
This skill is a Chinese-language guide to the three Telegram development surfaces: the Bot API for chat bots, the Mini Apps (Web Apps) JavaScript interface for apps that run inside Telegram, and the Telegram API with TDLib for custom clients. It lists the main Bot API methods for updates, messages, media, polls, files and payments, including Telegram Stars.
For bots it shows how to get a token from @BotFather, call the HTTP endpoint with Python requests, set up a webhook with a Flask example, and build inline keyboards and inline mode. Webhooks need a public HTTPS URL, TLS 1.2 or newer and one of ports 443, 80, 88 or 8443. Reference files add an index, a template for buttons and keyboards, and a document on dynamic view alignment.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9b42dd1. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, python and html).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.telegram.orgtelegram.orgt.meAlso links to:
github.comcore.telegram.orgdocs.telegram-mini-apps.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BOT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Telegram Development Guide loads about 3.7k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 31 tokens; SKILL.md has 438 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from 2025Emma/vibe-coding-cn at commit 9b42dd1, republished under its MIT licence (© 2025Emma). 438 words, ~3,715 tokens.
.claude/skills/telegram-dev/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.全面的 Telegram 开发指南,涵盖 Bot 开发、Mini Apps (Web Apps)、客户端开发的完整技术栈。
当需要以下帮助时使用此技能:
Bot API - 创建机器人程序
Mini Apps API (Web Apps) - 创建 Web 应用
Telegram API & TDLib - 创建客户端
API 端点:
https://api.telegram.org/bot<TOKEN>/METHOD_NAME获取 Bot Token:
/newbot第一个 Bot (Python):
import requests
BOT_TOKEN = "your_bot_token_here"
API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"
# 发送消息
def send_message(chat_id, text):
url = f"{API_URL}/sendMessage"
data = {"chat_id": chat_id, "text": text}
return requests.post(url, json=data)
# 获取更新(长轮询)
def get_updates(offset=None):
url = f"{API_URL}/getUpdates"
params = {"offset": offset, "timeout": 30}
return requests.get(url, params=params).json()
# 主循环
offset = None
while True:
updates = get_updates(offset)
for update in updates.get("result", []):
chat_id = update["message"]["chat"]["id"]
text = update["message"]["text"]
# 回复消息
send_message(chat_id, f"你说了:{text}")
offset = update["update_id"] + 1更新管理:
getUpdates - 长轮询获取更新setWebhook - 设置 WebhookdeleteWebhook - 删除 WebhookgetWebhookInfo - 查询 Webhook 状态消息操作:
sendMessage - 发送文本消息sendPhoto / sendVideo / sendDocument - 发送媒体sendAudio / sendVoice - 发送音频sendLocation / sendVenue - 发送位置editMessageText - 编辑消息deleteMessage - 删除消息forwardMessage / copyMessage - 转发/复制消息交互元素:
sendPoll - 发送投票(最多 12 个选项)answerCallbackQuery - 响应回调查询文件操作:
getFile - 获取文件信息downloadFile - 下载文件支付功能:
sendInvoice - 发送发票answerPreCheckoutQuery - 处理支付设置 Webhook:
import requests
BOT_TOKEN = "your_token"
WEBHOOK_URL = "https://yourdomain.com/webhook"
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/setWebhook",
json={"url": WEBHOOK_URL}
)Flask Webhook 示例:
from flask import Flask, request
import requests
app = Flask(__name__)
BOT_TOKEN = "your_token"
@app.route('/webhook', methods=['POST'])
def webhook():
update = request.get_json()
chat_id = update["message"]["chat"]["id"]
text = update["message"]["text"]
# 发送回复
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
json={"chat_id": chat_id, "text": f"收到: {text}"}
)
return "OK"
if __name__ == '__main__':
app.run(port=5000)Webhook 要求:
创建内联键盘:
def send_inline_keyboard(chat_id):
keyboard = {
"inline_keyboard": [
[
{"text": "按钮 1", "callback_data": "btn1"},
{"text": "按钮 2", "callback_data": "btn2"}
],
[
{"text": "打开链接", "url": "https://example.com"}
]
]
}
requests.post(
f"{API_URL}/sendMessage",
json={
"chat_id": chat_id,
"text": "选择一个选项:",
"reply_markup": keyboard
}
)处理回调:
def handle_callback_query(callback_query):
query_id = callback_query["id"]
data = callback_query["data"]
chat_id = callback_query["message"]["chat"]["id"]
# 响应回调
requests.post(
f"{API_URL}/answerCallbackQuery",
json={"callback_query_id": query_id, "text": f"你点击了 {data}"}
)
# 更新消息
requests.post(
f"{API_URL}/editMessageText",
json={
"chat_id": chat_id,
"message_id": callback_query["message"]["message_id"],
"text": f"你选择了:{data}"
}
)配置内联模式:
与 @BotFather 对话,发送 /setinline
处理内联查询:
def handle_inline_query(inline_query):
query_id = inline_query["id"]
query_text = inline_query["query"]
# 创建结果
results = [
{
"type": "article",
"id": "1",
"title": "结果 1",
"input_message_content": {
"message_text": f"你搜索了:{query_text}"
}
}
]
requests.post(
f"{API_URL}/answerInlineQuery",
json={"inline_query_id": query_id, "results": results}
)HTML 模板:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://telegram.org/js/telegram-web-app.js"></script>
<title>My Mini App</title>
</head>
<body>
<h1>Telegram Mini App</h1>
<button id="mainBtn">主按钮</button>
<script>
// 获取 Telegram WebApp 对象
const tg = window.Telegram.WebApp;
// 通知 Telegram 应用已准备好
tg.ready();
// 展开到全屏
tg.expand();
// 显示用户信息
const user = tg.initDataUnsafe?.user;
if (user) {
console.log("用户名:", user.first_name);
console.log("用户ID:", user.id);
}
// 配置主按钮
tg.MainButton.text = "提交";
tg.MainButton.show();
tg.MainButton.onClick(() => {
// 发送数据到 Bot
tg.sendData(JSON.stringify({action: "submit"}));
});
// 添加返回按钮
tg.BackButton.show();
tg.BackButton.onClick(() => {
tg.close();
});
</script>
</body>
</html>WebApp 对象主要属性:
// 初始化数据
tg.initData // 原始初始化字符串
tg.initDataUnsafe // 解析后的对象
// 用户和主题
tg.initDataUnsafe.user // 用户信息
tg.themeParams // 主题颜色
tg.colorScheme // 'light' 或 'dark'
// 状态
tg.isExpanded // 是否全屏
tg.isFullscreen // 是否全屏
tg.viewportHeight // 视口高度
tg.platform // 平台类型
// 版本
tg.version // WebApp 版本主要方法:
// 窗口控制
tg.ready() // 标记应用准备就绪
tg.expand() // 展开到全高度
tg.close() // 关闭 Mini App
tg.requestFullscreen() // 请求全屏
// 数据发送
tg.sendData(data) // 发送数据到 Bot
// 导航
tg.openLink(url) // 打开外部链接
tg.openTelegramLink(url) // 打开 Telegram 链接
// 对话框
tg.showPopup(params, callback) // 显示弹窗
tg.showAlert(message) // 显示警告
tg.showConfirm(message) // 显示确认
// 分享
tg.shareMessage(message) // 分享消息
tg.shareUrl(url) // 分享链接主按钮 (MainButton):
tg.MainButton.setText("点击我");
tg.MainButton.show();
tg.MainButton.enable();
tg.MainButton.showProgress(); // 显示加载
tg.MainButton.hideProgress();
tg.MainButton.onClick(() => {
console.log("主按钮被点击");
});次要按钮 (SecondaryButton):
tg.SecondaryButton.setText("取消");
tg.SecondaryButton.show();
tg.SecondaryButton.onClick(() => {
tg.close();
});返回按钮 (BackButton):
tg.BackButton.show();
tg.BackButton.onClick(() => {
// 返回逻辑
});触觉反馈:
tg.HapticFeedback.impactOccurred('light'); // light, medium, heavy
tg.HapticFeedback.notificationOccurred('success'); // success, warning, error
tg.HapticFeedback.selectionChanged();云存储:
// 保存数据
tg.CloudStorage.setItem('key', 'value', (error, success) => {
if (success) console.log('保存成功');
});
// 获取数据
tg.CloudStorage.getItem('key', (error, value) => {
console.log('值:', value);
});
// 删除数据
tg.CloudStorage.removeItem('key');
// 获取所有键
tg.CloudStorage.getKeys((error, keys) => {
console.log('所有键:', keys);
});本地存储:
// 普通本地存储
localStorage.setItem('key', 'value');
const value = localStorage.getItem('key');
// 安全存储(需要生物识别)
tg.SecureStorage.setItem('secret', 'value', callback);
tg.SecureStorage.getItem('secret', callback);const bioManager = tg.BiometricManager;
// 初始化
bioManager.init(() => {
if (bioManager.isInited) {
console.log('支持的类型:', bioManager.biometricType);
// 'finger', 'face', 'unknown'
if (bioManager.isAccessGranted) {
// 已授权,可以使用
} else {
// 请求授权
bioManager.requestAccess({reason: '需要验证身份'}, (success) => {
if (success) {
console.log('授权成功');
}
});
}
}
});
// 执行认证
bioManager.authenticate({reason: '确认操作'}, (success, token) => {
if (success) {
console.log('认证成功,token:', token);
}
});获取位置:
tg.LocationManager.init(() => {
if (tg.LocationManager.isInited) {
tg.LocationManager.getLocation((location) => {
console.log('纬度:', location.latitude);
console.log('经度:', location.longitude);
});
}
});加速度计:
tg.Accelerometer.start({refresh_rate: 100}, (started) => {
if (started) {
tg.Accelerometer.onEvent((event) => {
console.log('加速度:', event.x, event.y, event.z);
});
}
});
// 停止
tg.Accelerometer.stop();陀螺仪:
tg.Gyroscope.start({refresh_rate: 100}, callback);
tg.Gyroscope.onEvent((event) => {
console.log('旋转速度:', event.x, event.y, event.z);
});设备方向:
tg.DeviceOrientation.start({refresh_rate: 100}, callback);
tg.DeviceOrientation.onEvent((event) => {
console.log('方向:', event.absolute, event.alpha, event.beta, event.gamma);
});发起支付 (Telegram Stars):
tg.openInvoice('https://t.me/$invoice_link', (status) => {
if (status === 'paid') {
console.log('支付成功');
} else if (status === 'cancelled') {
console.log('支付取消');
} else if (status === 'failed') {
console.log('支付失败');
}
});服务器端验证 initData (Python):
import hmac
import hashlib
from urllib.parse import parse_qs
def validate_init_data(init_data, bot_token):
# 解析数据
parsed = parse_qs(init_data)
received_hash = parsed.get('hash', [''])[0]
# 移除 hash
data_check_arr = []
for key, value in parsed.items():
if key != 'hash':
data_check_arr.append(f"{key}={value[0]}")
# 排序
data_check_arr.sort()
data_check_string = '\n'.join(data_check_arr)
# 计算密钥
secret_key = hmac.new(
b"WebAppData",
bot_token.encode(),
hashlib.sha256
).digest()
# 计算哈希
calculated_hash = hmac.new(
secret_key,
data_check_string.encode(),
hashlib.sha256
).hexdigest()
return calculated_hash == received_hash从键盘按钮:
keyboard = {
"keyboard": [[
{
"text": "打开应用",
"web_app": {"url": "https://yourdomain.com/app"}
}
]],
"resize_keyboard": True
}
requests.post(
f"{API_URL}/sendMessage",
json={
"chat_id": chat_id,
"text": "点击按钮打开应用",
"reply_markup": keyboard
}
)从内联按钮:
keyboard = {
"inline_keyboard": [[
{
"text": "启动应用",
"web_app": {"url": "https://yourdomain.com/app"}
}
]]
}从菜单按钮: 与 @BotFather 对话:
/setmenubutton
→ 选择你的 Bot
→ 提供 URL: https://yourdomain.com/appPython 示例 (python-telegram):
from telegram.client import Telegram
tg = Telegram(
api_id='your_api_id',
api_hash='your_api_hash',
phone='+1234567890',
database_encryption_key='changeme1234',
)
tg.login()
# 发送消息
result = tg.send_message(
chat_id=123456789,
text='Hello from TDLib!'
)
# 获取聊天列表
result = tg.get_chats()
result.wait()
chats = result.update
print(chats)
tg.stop()特点:
错误处理
try:
response = requests.post(url, json=data, timeout=10)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")速率限制
使用 Webhook 而非长轮询
数据验证
响应式设计
// 监听主题变化
tg.onEvent('themeChanged', () => {
document.body.style.backgroundColor = tg.themeParams.bg_color;
});
// 监听视口变化
tg.onEvent('viewportChanged', () => {
console.log('新高度:', tg.viewportHeight);
});性能优化
用户体验
安全考虑
python-telegram-bot - 功能强大的 Bot 框架aiogram - 异步 Bot 框架telethon / pyrogram - MTProto 客户端node-telegram-bot-api - Bot API 包装器telegraf - 现代 Bot 框架grammy - 轻量级框架telegram-bot-sdktelegram-bot-apiTelegramBotsTelegram.Bot此技能包含详细的 Telegram 开发资源索引和完整实现模板:
这些精简指南提供了核心的 Telegram Bot 开发解决方案:
使用此技能掌握 Telegram 生态的全栈开发!
© 2025Emma, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in i18n/zh/skills/telegram-dev of 2025Emma/vibe-coding-cn.
Open the folder on GitHubat commit 9b42dd1
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in 2025Emma/vibe-coding-cn, which our catalogue first saw on October 7, 2026.
Telegram Development Guide next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Telegram Development Guide this skill2025Emma/vibe-coding-cn | 23k | 1 repos | ~3.7k | Automated safety check: Pass | MIT | |
| Fishjam Python Server SDKsoftware-mansion-labs/skills | 291 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Telegram Bot Builderaiskillstore/marketplace | 430 | 3 repos | ~2.2k | Automated safety check: Notes | None | |
| Tlgrtlgrcli/tlgr | 191 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Tg Bot Opsserejaris/personal-corp-os | 229 | — | ~1.6k | Automated safety check: Notes | MIT | |
| Bfl APIblack-forest-labs/skills | 125 | 1 repos | ~2.5k | Automated safety check: Notes | MIT |
software-mansion-labs/skills
Python server SDK for Fishjam — backends that create rooms, mint peer tokens, receive server notifications, and run voice agents.
aiskillstore/marketplace
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots.
tlgrcli/tlgr
Read and act on a personal Telegram account from the terminal with the tlgr CLI (MTProto user account, not a bot).
serejaris/personal-corp-os
A skill your agent uses when operating, debugging, deploying, or monitoring a Telegram bot or Telegram-to-agent gateway.
black-forest-labs/skills
BFL FLUX API integration guide covering endpoints, async polling patterns, rate limiting, error handling, webhooks, and regional endpoints with Python and TypeScript code examples.
tokencanopy/e2a
A skill your agent uses when adding e2a email capabilities to an application or codebase: outbound sending, inbound signed webhooks, REST polling, or SDK integration.
2025Emma/vibe-coding-cn
Reference of Claude API examples and guides covering tool use, vision, RAG, classification, summarization, text-to-SQL, prompt caching and agent patterns.
2025Emma/vibe-coding-cn
Retries failed network commands through proxychains4 and a local proxy when it sees timeouts, DNS failures or blocked access.
2025Emma/vibe-coding-cn
Builds new skills from scattered docs, specs or code, and refactors existing skills for clear triggers, reliable activation and a quality checklist.
2025Emma/vibe-coding-cn
Reference help for the CCXT library covering crypto exchange APIs, market data, trading and order management across 150+ exchanges in JavaScript, Python and PHP.
2025Emma/vibe-coding-cn
CoinGecko API documentation - cryptocurrency market data API, price feeds, market cap, volume, historical data. Use when integrating CoinGecko API, building…
2025Emma/vibe-coding-cn
Reference documentation for building, configuring and debugging automated trading strategies, market making and exchange connectors with Hummingbot.
Categories
Chinese-language guide to building on Telegram: bots through the Bot API, Mini Apps in JavaScript and custom clients through TDLib, with Python examples. This skill is a Chinese-language guide to the three Telegram development surfaces: the Bot API for chat bots, the Mini Apps (Web Apps) JavaScript interface for apps that run inside Telegram, and the Telegram API with TDLib for custom clients. It lists the main Bot API methods for updates, messages, media, polls, files and payments, including Telegram Stars.
Telegram Development Guide fits situations like: building a Telegram bot that sends messages, media and polls; setting up a Telegram webhook or long polling for a bot; creating a Mini App that runs inside Telegram; adding inline keyboards or inline mode to a bot.
Run `npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a claude-code`. Or copy the skill folder (i18n/zh/skills/telegram-dev in 2025Emma/vibe-coding-cn) into .claude/skills/telegram-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a codex`. Or copy the skill folder (i18n/zh/skills/telegram-dev in 2025Emma/vibe-coding-cn) into .agents/skills/telegram-dev in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add 2025Emma/vibe-coding-cn --skill telegram-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/telegram-dev, .gemini/skills/telegram-dev, .github/skills/telegram-dev and .opencode/skills/telegram-dev in your project.
Going by SKILL.md and its folder, Telegram Development Guide needs credentials named BOT_TOKEN. Our summary lists: A Telegram bot token from @BotFather; A public HTTPS URL for webhooks.
SKILL.md names 6 domains. In commands or code: api.telegram.org, telegram.org and t.me; the agent is likely to contact these when it follows the instructions. As links in the text: github.com, core.telegram.org and docs.telegram-mini-apps.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Telegram Development Guide is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Telegram Development Guide: Fishjam Python Server SDK (software-mansion-labs/skills, 291 stars), Telegram Bot Builder (aiskillstore/marketplace, 430 stars), Tlgr (tlgrcli/tlgr, 191 stars) and Tg Bot Ops (serejaris/personal-corp-os, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
2025Emma (a GitHub user) maintains it in 2025Emma/vibe-coding-cn, which has 23,033 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on December 17, 2025.
Source: 2025Emma/vibe-coding-cn on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.