471 lines
10 KiB
Markdown
471 lines
10 KiB
Markdown
# Telegram 生态开发资源索引
|
||
|
||
## 官方文档
|
||
|
||
### Bot API
|
||
**主文档:** https://core.telegram.org/bots/api
|
||
**描述:** Telegram Bot API 完整参考文档
|
||
|
||
**核心功能:**
|
||
- 消息发送和接收
|
||
- 媒体文件处理
|
||
- 内联模式
|
||
- 支付集成
|
||
- Webhook 配置
|
||
- 游戏和投票
|
||
|
||
### Mini Apps (Web Apps)
|
||
**主文档:** https://core.telegram.org/bots/webapps
|
||
**完整平台:** https://docs.telegram-mini-apps.com
|
||
**描述:** Telegram 小程序开发文档
|
||
|
||
**核心功能:**
|
||
- WebApp API
|
||
- 主题和 UI 控件
|
||
- 存储(Cloud/Device/Secure)
|
||
- 生物识别认证
|
||
- 位置和传感器
|
||
- 支付集成
|
||
|
||
### Telegram API & MTProto
|
||
**主文档:** https://core.telegram.org
|
||
**描述:** 完整的 Telegram 协议和客户端开发
|
||
|
||
**核心功能:**
|
||
- MTProto 协议
|
||
- TDLib 客户端库
|
||
- 认证和加密
|
||
- 文件操作
|
||
- Secret Chats
|
||
|
||
## 官方 GitHub 仓库
|
||
|
||
### Bot API 服务器
|
||
**仓库:** https://github.com/tdlib/telegram-bot-api
|
||
**描述:** Telegram Bot API 服务器实现
|
||
**特点:**
|
||
- 本地模式部署
|
||
- 支持大文件(最高 2000 MB)
|
||
- C++ 实现
|
||
- TDLib 基础
|
||
|
||
### Android 客户端
|
||
**仓库:** https://github.com/DrKLO/Telegram
|
||
**描述:** 官方 Android 客户端源代码
|
||
**特点:**
|
||
- 完整的 Android 实现
|
||
- Material Design
|
||
- 可自定义编译
|
||
|
||
### Desktop 客户端
|
||
**仓库:** https://github.com/telegramdesktop/tdesktop
|
||
**描述:** 官方桌面客户端 (Windows, macOS, Linux)
|
||
**特点:**
|
||
- Qt/C++ 实现
|
||
- 跨平台支持
|
||
- 完整功能
|
||
|
||
### 官方组织
|
||
**组织页面:** https://github.com/orgs/TelegramOfficial/repositories
|
||
**包含:**
|
||
- Beta 版本
|
||
- 支持工具
|
||
- 示例代码
|
||
|
||
## API 方法分类
|
||
|
||
### 更新管理
|
||
- `getUpdates` - 长轮询
|
||
- `setWebhook` - 设置 Webhook
|
||
- `deleteWebhook` - 删除 Webhook
|
||
- `getWebhookInfo` - Webhook 信息
|
||
|
||
### 消息操作
|
||
**发送消息:**
|
||
- `sendMessage` - 文本消息
|
||
- `sendPhoto` - 图片
|
||
- `sendVideo` - 视频
|
||
- `sendDocument` - 文档
|
||
- `sendAudio` - 音频
|
||
- `sendVoice` - 语音
|
||
- `sendLocation` - 位置
|
||
- `sendVenue` - 地点
|
||
- `sendContact` - 联系人
|
||
- `sendPoll` - 投票
|
||
- `sendDice` - 骰子/飞镖
|
||
|
||
**编辑消息:**
|
||
- `editMessageText` - 编辑文本
|
||
- `editMessageCaption` - 编辑标题
|
||
- `editMessageMedia` - 编辑媒体
|
||
- `editMessageReplyMarkup` - 编辑键盘
|
||
- `deleteMessage` - 删除消息
|
||
|
||
**其他操作:**
|
||
- `forwardMessage` - 转发消息
|
||
- `copyMessage` - 复制消息
|
||
- `sendChatAction` - 发送动作(输入中...)
|
||
|
||
### 文件操作
|
||
- `getFile` - 获取文件信息
|
||
- 文件下载 URL: `https://api.telegram.org/file/bot<token>/<file_path>`
|
||
- 文件上传:支持 multipart/form-data
|
||
- 最大文件:50 MB (标准), 2000 MB (本地 Bot API)
|
||
|
||
### 内联模式
|
||
- `answerInlineQuery` - 响应内联查询
|
||
- 结果类型:article, photo, gif, video, audio, voice, document, location, venue, contact, game, sticker
|
||
|
||
### 回调查询
|
||
- `answerCallbackQuery` - 响应按钮点击
|
||
- 可显示通知或警告
|
||
|
||
### 支付
|
||
- `sendInvoice` - 发送发票
|
||
- `answerPreCheckoutQuery` - 预结账
|
||
- `answerShippingQuery` - 配送查询
|
||
- 支持提供商:Stripe, Yandex.Money, Telegram Stars
|
||
|
||
### 游戏
|
||
- `sendGame` - 发送游戏
|
||
- `setGameScore` - 设置分数
|
||
- `getGameHighScores` - 获取排行榜
|
||
|
||
### 群组管理
|
||
- `kickChatMember` / `unbanChatMember` - 封禁/解封
|
||
- `restrictChatMember` - 限制权限
|
||
- `promoteChatMember` - 提升管理员
|
||
- `setChatTitle` / `setChatDescription` - 设置信息
|
||
- `setChatPhoto` - 设置头像
|
||
- `pinChatMessage` / `unpinChatMessage` - 置顶消息
|
||
|
||
## Mini Apps API 详解
|
||
|
||
### 初始化
|
||
```javascript
|
||
const tg = window.Telegram.WebApp;
|
||
tg.ready();
|
||
tg.expand();
|
||
```
|
||
|
||
### 主要对象
|
||
- **WebApp** - 主接口
|
||
- **MainButton** - 主按钮
|
||
- **SecondaryButton** - 次要按钮
|
||
- **BackButton** - 返回按钮
|
||
- **SettingsButton** - 设置按钮
|
||
- **HapticFeedback** - 触觉反馈
|
||
- **CloudStorage** - 云存储
|
||
- **BiometricManager** - 生物识别
|
||
- **LocationManager** - 位置服务
|
||
- **Accelerometer** - 加速度计
|
||
- **Gyroscope** - 陀螺仪
|
||
- **DeviceOrientation** - 设备方向
|
||
|
||
### 事件系统
|
||
40+ 事件包括:
|
||
- `themeChanged` - 主题改变
|
||
- `viewportChanged` - 视口改变
|
||
- `mainButtonClicked` - 主按钮点击
|
||
- `backButtonClicked` - 返回按钮点击
|
||
- `settingsButtonClicked` - 设置按钮点击
|
||
- `invoiceClosed` - 支付完成
|
||
- `popupClosed` - 弹窗关闭
|
||
- `qrTextReceived` - 扫码结果
|
||
- `clipboardTextReceived` - 剪贴板文本
|
||
- `writeAccessRequested` - 写入权限请求
|
||
- `contactRequested` - 联系人请求
|
||
|
||
### 主题参数
|
||
```javascript
|
||
tg.themeParams = {
|
||
bg_color, // 背景色
|
||
text_color, // 文本色
|
||
hint_color, // 提示色
|
||
link_color, // 链接色
|
||
button_color, // 按钮色
|
||
button_text_color, // 按钮文本色
|
||
secondary_bg_color, // 次要背景色
|
||
header_bg_color, // 头部背景色
|
||
accent_text_color, // 强调文本色
|
||
section_bg_color, // 区块背景色
|
||
section_header_text_color, // 区块头文本色
|
||
subtitle_text_color, // 副标题色
|
||
destructive_text_color // 危险操作色
|
||
}
|
||
```
|
||
|
||
## 开发工具
|
||
|
||
### @BotFather 命令
|
||
创建和管理 Bot 的核心工具:
|
||
|
||
**Bot 管理:**
|
||
- `/newbot` - 创建新 Bot
|
||
- `/mybots` - 管理我的 Bots
|
||
- `/deletebot` - 删除 Bot
|
||
- `/token` - 重新生成 token
|
||
|
||
**设置命令:**
|
||
- `/setname` - 设置名称
|
||
- `/setdescription` - 设置描述
|
||
- `/setabouttext` - 设置关于文本
|
||
- `/setuserpic` - 设置头像
|
||
|
||
**功能配置:**
|
||
- `/setcommands` - 设置命令列表
|
||
- `/setinline` - 启用内联模式
|
||
- `/setinlinefeedback` - 内联反馈
|
||
- `/setjoingroups` - 允许加入群组
|
||
- `/setprivacy` - 隐私模式
|
||
|
||
**支付和游戏:**
|
||
- `/setgamescores` - 游戏分数
|
||
- `/setpayments` - 配置支付
|
||
|
||
**Mini Apps:**
|
||
- `/newapp` - 创建 Mini App
|
||
- `/myapps` - 管理 Mini Apps
|
||
- `/setmenubutton` - 设置菜单按钮
|
||
|
||
### API ID 获取
|
||
访问 https://my.telegram.org
|
||
1. 登录账号
|
||
2. 进入 API development tools
|
||
3. 创建应用
|
||
4. 获取 API ID 和 API Hash
|
||
|
||
## 常用 Python 库
|
||
|
||
### python-telegram-bot
|
||
```bash
|
||
pip install python-telegram-bot
|
||
```
|
||
|
||
**特点:**
|
||
- 完整的 Bot API 包装
|
||
- 异步和同步支持
|
||
- 丰富的扩展
|
||
- 活跃维护
|
||
|
||
**基础示例:**
|
||
```python
|
||
from telegram import Update
|
||
from telegram.ext import Application, CommandHandler, ContextTypes
|
||
|
||
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
||
await update.message.reply_text('你好!')
|
||
|
||
app = Application.builder().token("TOKEN").build()
|
||
app.add_handler(CommandHandler("start", start))
|
||
app.run_polling()
|
||
```
|
||
|
||
### aiogram
|
||
```bash
|
||
pip install aiogram
|
||
```
|
||
|
||
**特点:**
|
||
- 纯异步
|
||
- 高性能
|
||
- FSM 状态机
|
||
- 中间件系统
|
||
|
||
### Telethon / Pyrogram
|
||
MTProto 客户端库:
|
||
```bash
|
||
pip install telethon
|
||
pip install pyrogram
|
||
```
|
||
|
||
**用途:**
|
||
- 自定义客户端
|
||
- 用户账号自动化
|
||
- 完整 Telegram 功能
|
||
|
||
## 常用 Node.js 库
|
||
|
||
### node-telegram-bot-api
|
||
```bash
|
||
npm install node-telegram-bot-api
|
||
```
|
||
|
||
### Telegraf
|
||
```bash
|
||
npm install telegraf
|
||
```
|
||
|
||
**特点:**
|
||
- 现代化
|
||
- 中间件架构
|
||
- TypeScript 支持
|
||
|
||
### grammY
|
||
```bash
|
||
npm install grammy
|
||
```
|
||
|
||
**特点:**
|
||
- 轻量级
|
||
- 类型安全
|
||
- 插件生态
|
||
|
||
## 部署选项
|
||
|
||
### Webhook 托管
|
||
**推荐平台:**
|
||
- Heroku
|
||
- AWS Lambda
|
||
- Google Cloud Functions
|
||
- Azure Functions
|
||
- Vercel
|
||
- Railway
|
||
- Render
|
||
|
||
**要求:**
|
||
- HTTPS 支持
|
||
- 公网可访问
|
||
- 支持的端口:443, 80, 88, 8443
|
||
|
||
### 长轮询托管
|
||
**推荐平台:**
|
||
- VPS (Vultr, DigitalOcean, Linode)
|
||
- Raspberry Pi
|
||
- 本地服务器
|
||
|
||
**优点:**
|
||
- 无需 HTTPS
|
||
- 简单配置
|
||
- 适合开发测试
|
||
|
||
## 安全最佳实践
|
||
|
||
1. **Token 安全**
|
||
- 不要提交到 Git
|
||
- 使用环境变量
|
||
- 定期轮换
|
||
|
||
2. **数据验证**
|
||
- 验证 initData
|
||
- 服务器端验证
|
||
- 不信任客户端
|
||
|
||
3. **权限控制**
|
||
- 检查用户权限
|
||
- 管理员验证
|
||
- 群组权限
|
||
|
||
4. **速率限制**
|
||
- 实现请求限制
|
||
- 防止滥用
|
||
- 监控异常
|
||
|
||
## 调试技巧
|
||
|
||
### Bot 调试
|
||
```python
|
||
import logging
|
||
logging.basicConfig(level=logging.DEBUG)
|
||
```
|
||
|
||
### Mini App 调试
|
||
```javascript
|
||
// 开启调试模式
|
||
tg.showAlert(JSON.stringify(tg.initDataUnsafe, null, 2));
|
||
|
||
// 控制台日志
|
||
console.log('WebApp version:', tg.version);
|
||
console.log('Platform:', tg.platform);
|
||
console.log('Theme:', tg.colorScheme);
|
||
```
|
||
|
||
### Webhook 测试
|
||
使用 ngrok 本地测试:
|
||
```bash
|
||
ngrok http 5000
|
||
# 将生成的 https URL 设置为 webhook
|
||
```
|
||
|
||
## 社区资源
|
||
|
||
- **Telegram 开发者群组**: @BotDevelopers
|
||
- **Telegram API 讨论**: @TelegramBots
|
||
- **Mini Apps 讨论**: @WebAppChat
|
||
|
||
## 更新日志
|
||
|
||
**最新功能:**
|
||
- Paid Media (付费媒体)
|
||
- Checklist Tasks (检查列表任务)
|
||
- Gift Conversion (礼物转换)
|
||
- Business Features (商业功能)
|
||
- Poll 选项增加到 12 个
|
||
- Story 发布和编辑
|
||
|
||
---
|
||
|
||
## 完整实现模板 (新增)
|
||
|
||
### Telegram Bot 按钮和键盘实现指南
|
||
**文件:** `Telegram_Bot_按钮和键盘实现模板.md`
|
||
**行数:** 404 行
|
||
**大小:** 12 KB
|
||
**语言:** 中文
|
||
|
||
精简实用的 Telegram Bot 交互式功能实现指南:
|
||
|
||
**核心内容:**
|
||
- 三种按钮类型详解(Inline/Reply/Command Menu)
|
||
- python-telegram-bot 和 Telethon 双实现对比
|
||
- 完整的代码示例(即拿即用)
|
||
- 项目结构和模块化设计
|
||
- Handler 优先级和事件处理
|
||
- 生产环境部署方案
|
||
- 安全和错误处理最佳实践
|
||
|
||
**特色:**
|
||
- 核心代码精简,去除冗余示例
|
||
- 聚焦常用场景和实用技巧
|
||
- 完整的快速参考表
|
||
|
||
---
|
||
|
||
### 动态视图对齐 - 数据展示指南
|
||
**文件:** `动态视图对齐实现文档.md`
|
||
**行数:** 407 行
|
||
**大小:** 12 KB
|
||
**语言:** 中文
|
||
|
||
专业的等宽字体数据对齐和格式化方案:
|
||
|
||
**核心功能:**
|
||
- 智能动态视图对齐算法(三步法)
|
||
- 自动计算列宽,无需硬编码
|
||
- 智能对齐规则(文本左,数字右)
|
||
- 完整的格式化系统:
|
||
- 交易量智能缩写(B/M/K)
|
||
- 价格智能精度(自适应小数位)
|
||
- 涨跌幅格式化(+/- 符号)
|
||
- 资金流向智能显示
|
||
|
||
**应用场景:**
|
||
- 排行榜、数据表格、实时行情
|
||
- 任何需要专业数据展示的 Telegram Bot
|
||
|
||
**技术特点:**
|
||
- O(n×m) 线性复杂度,高效实用
|
||
- 1000 行数据处理仅需 5-10ms
|
||
- 支持中文字符宽度扩展
|
||
|
||
**视觉效果示例:**
|
||
```
|
||
1. BTC $1.23B $45,000 +5.23%
|
||
2. ETH $890.5M $2,500 +3.12%
|
||
3. SOL $567.8M $101 +8.45%
|
||
```
|
||
|
||
---
|
||
|
||
**这些模板提供了从基础到生产级别的完整 Telegram Bot 开发解决方案!**
|