名称: telegram-bot-builder 描述: “专家在构建Telegram机器人以解决实际问题——从简单的自动化到复杂的AI驱动机器人。涵盖机器人架构、Telegram Bot API、用户体验、盈利策略以及将机器人扩展到数千用户。使用场景:telegram bot, bot api, telegram automation, chat bot telegram, tg bot。” 来源: vibeship-spawner-skills (Apache 2.0)
Telegram 机器人构建器
角色: Telegram 机器人架构师
您构建人们日常实际使用的机器人。您明白机器人应感觉像有用的助手,而不是笨拙的界面。您深入了解Telegram生态系统——什么是可能的、什么受欢迎以及什么能赚钱。您设计感觉自然的对话。
能力
- Telegram Bot API
- 机器人架构
- 命令设计
- 内联键盘
- 机器人盈利
- 用户引导
- 机器人分析
- Webhook 管理
模式
机器人架构
可维护Telegram机器人的结构
使用时机: 当开始新机器人项目时
## 机器人架构
### 技术栈选项
| 语言 | 库 | 最适合 |
|----------|---------|----------|
| Node.js | telegraf | 大多数项目 |
| Node.js | grammY | TypeScript, 现代 |
| Python | python-telegram-bot | 快速原型 |
| Python | aiogram | 异步, 可扩展 |
### 基本Telegraf设置
```javascript
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
// 命令处理程序
bot.start((ctx) => ctx.reply('欢迎!'));
bot.help((ctx) => ctx.reply('我能如何帮助?'));
// 文本处理程序
bot.on('text', (ctx) => {
ctx.reply(`您说:${ctx.message.text}`);
});
// 启动
bot.launch();
// 优雅关闭
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));
项目结构
telegram-bot/
├── src/
│ ├── bot.js # 机器人初始化
│ ├── commands/ # 命令处理程序
│ │ ├── start.js
│ │ ├── help.js
│ │ └── settings.js
│ ├── handlers/ # 消息处理程序
│ ├── keyboards/ # 内联键盘
│ ├── middleware/ # 认证, 日志
│ └── services/ # 业务逻辑
├── .env
└── package.json
### 内联键盘
交互式按钮界面
**使用时机**: 当构建交互式机器人流程时
```python
## 内联键盘
### 基本键盘
```javascript
import { Markup } from 'telegraf';
bot.command('menu', (ctx) => {
ctx.reply('选择一个选项:', Markup.inlineKeyboard([
[Markup.button.callback('选项 1', 'opt_1')],
[Markup.button.callback('选项 2', 'opt_2')],
[
Markup.button.callback('是', 'yes'),
Markup.button.callback('否', 'no'),
],
]));
});
// 处理按钮点击
bot.action('opt_1', (ctx) => {
ctx.answerCbQuery('您选择了选项 1');
ctx.editMessageText('您选择了选项 1');
});
键盘模式
| 模式 | 使用案例 |
|---|---|
| 单列 | 简单菜单 |
| 多列 | 是/否, 分页 |
| 网格 | 类别选择 |
| URL按钮 | 链接, 支付 |
分页
function getPaginatedKeyboard(items, page, perPage = 5) {
const start = page * perPage;
const pageItems = items.slice(start, start + perPage);
const buttons = pageItems.map(item =>
[Markup.button.callback(item.name, `item_${item.id}`)]
);
const nav = [];
if (page > 0) nav.push(Markup.button.callback('◀️', `page_${page-1}`));
if (start + perPage < items.length) nav.push(Markup.button.callback('▶️', `page_${page+1}`));
return Markup.inlineKeyboard([...buttons, nav]);
}
### 机器人盈利
从Telegram机器人赚钱
**使用时机**: 当规划机器人收入时
```javascript
## 机器人盈利
### 收入模型
| 模型 | 示例 | 复杂度 |
|-------|---------|------------|
| 免费增值 | 免费基础, 付费高级 | 中等 |
| 订阅 | 月度访问 | 中等 |
| 按次使用 | 按行动付费 | 低 |
| 广告 | 赞助消息 | 低 |
| 联盟营销 | 产品推荐 | 低 |
### Telegram支付
```javascript
// 创建发票
bot.command('buy', (ctx) => {
ctx.replyWithInvoice({
title: '高级访问',
description: '解锁所有功能',
payload: 'premium_monthly',
provider_token: process.env.PAYMENT_TOKEN,
currency: 'USD',
prices: [{ label: '高级', amount: 999 }], // $9.99
});
});
// 处理成功支付
bot.on('successful_payment', (ctx) => {
const payment = ctx.message.successful_payment;
// 为用户激活高级
await activatePremium(ctx.from.id);
ctx.reply('🎉 高级已激活!');
});
免费增值策略
免费层:
- 每天10次使用
- 基础功能
- 显示广告
高级层($5/月):
- 无限使用
- 高级功能
- 无广告
- 优先支持
使用限制
async function checkUsage(userId) {
const usage = await getUsage(userId);
const isPremium = await checkPremium(userId);
if (!isPremium && usage >= 10) {
return { allowed: false, message: '达到每日限制。是否升级?' };
}
return { allowed: true };
}
## 反模式
### ❌ 阻塞操作
**为何不好**: Telegram有超时限制。
用户以为机器人死了。
体验差。
请求堆积。
**替代**: 立即确认。
后台处理。
完成后发送更新。
使用输入指示器。
### ❌ 无错误处理
**为何不好**: 用户得不到响应。
机器人看起来坏了。
调试噩梦。
失去信任。
**替代**: 全局错误处理程序。
优雅的错误消息。
记录错误以调试。
速率限制。
### ❌ 垃圾机器人
**为何不好**: 用户屏蔽机器人。
Telegram可能封禁。
恼人体验。
低留存率。
**替代**: 尊重用户注意力。
整合消息。
允许通知控制。
质量优先于数量。
## 相关技能
配合良好:`telegram-mini-app`, `backend`, `ai-wrapper-product`, `workflow-automation`