Telegram Bot Demo

一个功能完整的 Telegram 机器人示例项目,使用 TypeScript 开发。本项目展示了如何构建一个具有多种功能的 Telegram 机器人,包括消息处理、图片发送、按钮交互等特性。

✨ 功能特性

  • 🤖 基础功能

    • 自动回复用户消息
    • 支持命令处理(/start, /test)
    • 自动删除用户命令消息
    • 支持 HTML/Markdown 消息格式
  • 🖼️ 媒体功能

    • 支持发送图片
    • 支持图片+文字组合消息
    • 支持图片+按钮组合消息
  • 🔘 交互功能

    • 支持内联键盘按钮
    • 支持多行按钮布局
    • 支持按钮 URL 跳转
  • 📢 频道功能

    • 支持向频道发送消息
    • 支持频道消息权限检查
    • 支持频道消息重试机制

🚀 快速开始

环境要求

  • Node.js >= 14
  • pnpm >= 6
  • Telegram Bot Token (从 @BotFather 获取)
  • Telegram 频道 ID

安装

  1. 克隆项目
git clone <your-repo-url>
cd telegram-bot-demo
  1. 安装依赖
pnpm install

配置

  1. 复制环境变量模板文件
cp .env.example .env
  1. 编辑 .env 文件,填入你的配置:
# Telegram Bot Token (从 @BotFather 获取)
BOT_TOKEN=your_bot_token_here

# Channel ID (频道ID,例如: -1001234567890)
CHANNEL_ID=your_channel_id_here

运行

开发模式(支持热重载):

pnpm dev

生产模式:

# 构建项目
pnpm build

# 运行构建后的项目
pnpm start

📝 使用说明

基础命令

  • /start - 获取欢迎消息和功能按钮
  • /test - 获取测试图片

频道消息发送

// 发送文本消息
sendChannelMessage(channelId, {
  text: "消息内容",
  parseMode: "HTML",
  buttons: [
    [
      { text: "按钮1", url: "https://example.com" },
      { text: "按钮2", url: "https://example.org" }
    ]
  ]
});

// 发送图片消息
sendChannelMessage(channelId, {
  photo: "图片URL",
  caption: "图片说明",
  parseMode: "HTML",
  buttons: [
    [
      { text: "查看详情", url: "https://example.com" }
    ]
  ]
});

🔧 项目结构

├── src/
│   └── index.ts      # 主程序入口
├── .env              # 环境变量配置
├── .env.example      # 环境变量模板
├── .gitignore        # Git 忽略文件
├── package.json      # 项目配置
├── tsconfig.json     # TypeScript 配置
└── README.md         # 项目文档

📚 技术栈

  • TypeScript
  • node-telegram-bot-api
  • dotenv
  • ts-node-dev

🤝 贡献指南

  1. Fork 本仓库
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

📄 开源协议

本项目采用 MIT 协议 - 查看 LICENSE 文件了解详情

🙏 致谢