200字
从零开始:用 Docker 部署一个功能强大的 Telegram 多功能机器人
2025-12-19
2025-12-19

本文将带你从零开始,使用 Docker 部署一个集成了 AI 聊天、RSS 订阅、翻译、天气查询等多种实用功能的 Telegram 机器人,并通过 Web 面板轻松管理。

📖 前言

在日常使用 Telegram 的过程中,我们经常希望有一个能帮我们处理各种杂事的机器人——翻译一段文字、生成二维码、订阅博客更新、甚至和 AI 聊天。市面上虽然有很多单一功能的机器人,但找一个"全能型选手"却不容易。

今天介绍的这个项目正是我基于这个需求开发的,它的特点是:

- 🤖 功能丰富:集成翻译、二维码、天气、汇率、RSS、AI 对话等 15+ 功能

- 🐳 一键部署:Docker Compose 一条命令启动

- 🖥️ Web 管理:可视化配置面板,无需改配置文件

- 📊 使用统计:内置调用统计和日志查看

- 🔒 权限控制:管理员专属功能,密码保护面板

🚀 部署教程

前置条件

- 一台安装了 Docker 和 Docker Compose 的服务器(VPS、家用服务器均可)

- 一个 Telegram 账号

- (可选)OpenAI API Key(用于 AI 功能)

第一步:创建 Telegram Bot

1. 在 Telegram 中搜索 [@BotFather](https://t.me/BotFather)

2. 发送 /newbot 命令

3. 按提示输入机器人名称和用户名

4. 保存获得的 Bot Token(格式如 123456789:ABCdefGHIjklMNOpqrsTUVwxyz

📋 记下你的 Bot Token,后面会用到

第二步:获取你的用户 ID(可选但推荐)

如果你想接收 Bot 的启动通知和使用管理员功能,需要获取你的 Telegram 用户 ID:

1. 搜索 [@userinfobot](https://t.me/userinfobot) 或 [@getmyid_bot](https://t.me/getmyid_bot)

2. 向它发送任意消息

3. 记下返回的数字 ID

第三步:部署机器人

方式一:Docker Compose(推荐)

`bash

克隆仓库

git clone https://github.com/debbide/tgbot.git

cd tgbot

启动服务

docker-compose up -d

查看日志(可选)

docker-compose logs -f

方式二:Docker 命令

bash

docker run -d \

  --name tgbot \

  -p 3000:3000 \

  -v ./data:/app/data \

  --restart unless-stopped \

  ghcr.io/debbide/tgbot:latest

> 💡 提示:使用 -v ./data:/app/data 可以将数据持久化到宿主机,即使容器重建也不会丢失配置。

第四步:配置机器人

1. 打开浏览器访问 http://你的服务器IP:3000

2. 首次访问需要设置管理员密码(至少 6 位)

3. 登录后在配置面板中填写:

| 配置项 | 必填 | 说明 |

|--------|------|------|

| Bot Token | ✅ | 从 @BotFather 获取的 Token |

| 管理员 ID | ❌ | 可选,用于接收 Bot 启动通知 |

| OpenAI API Key | ❌ | 可选,用于 AI 聊天和摘要功能 |

| OpenAI API Base | ❌ | 默认使用官方 API,可配置中转服务 |

4. 点击 💾 保存配置

5. 点击顶部的 🔄 重启 按钮

---

💡 功能详解

🌐 翻译 /tr)

一键翻译文本到中文,也支持指定目标语言:

# 翻译到中文(默认)

/tr Hello, how are you?

# 翻译到英文

/tr en 你好,今天天气怎么样?

# 翻译到日文

/tr ja 美丽的风景

实现原理:使用 google-translate-api-x 库调用 Google 翻译服务,无需 API Key。

🤖 AI 对话 /chat/c)

与 OpenAI 驱动的 AI 助手对话,支持多轮上下文:

/chat 帮我写一首关于春天的诗

/c 再换一个更优美的版本

# 清除对话历史

/chat clear

特点

- 支持多轮对话记忆(最近 6 轮)

- 风格轻松幽默

- 兼容 OpenAI API 及中转服务(如 one-api)

📰 RSS 订阅 /rss)

订阅博客、新闻等 RSS 源,自动推送更新:

# 添加订阅

/rss add https://sspai.com/feed

# 查看订阅列表

/rss list

# 删除订阅

/rss del 1

# 设置检查间隔(分钟)

/rss interval 15

关键词过滤功能

# 只推送包含特定关键词的文章

/rss kw add AI,科技,开源

# 排除包含特定词汇的文章

/rss ex add 广告,招聘

# 查看当前关键词配置

/rss kw list

### ⏰ 定时提醒 /remind)

设置定时提醒,支持固定时间和倒计时:

# 固定时间提醒

/remind 14:30 下午开会

# 倒计时提醒

/remind 30m 休息一下

/remind 2h 该喝水了

# 查看所有提醒

/reminders

```

### 📱 二维码 /qr)

快速生成二维码图片:

/qr https://github.com

/qr 这是一段文字

### 🌤️ 天气查询 /weather)

查询全球任意城市的天气:

/weather 北京

/weather Tokyo

/weather New York

### 💰 汇率换算 /rate)

实时汇率换算:

/rate USD CNY 100

/rate 100 usd cny

/rate EUR JPY 50

🌍 网络工具

# IP 归属地查询

/ip 8.8.8.8

# Whois 域名信息

/whois github.com

---

🛠️ 进阶配置

使用 Telegram API 代理

如果你的服务器无法直接访问 Telegram API,可以配置代理:

1. 在 Web 面板中填写 TG API Base

2. 格式https://your-proxy.com/bot

3. 常见中转服务:

- [Cloudflare Worker 代理](https://github.com/vrnobody/V2RayGCon/wiki/TelegramBot-Gateway)

- 自建 Nginx 反向代理

### 配置 OpenAI 中转

如果使用 one-api、new-api 等中转服务:

API Base: https://your-one-api.com/v1

API Key: sk-xxxx

Model: gpt-4o-mini

自定义 AI 角色

目前 AI 角色在代码中定义,未来将支持在 Web 面板中配置。如需自定义,可修改 src/commands/chat.js 中的 SYSTEM_PROMPT

Web 面板功能

- 📈 使用统计:查看总调用次数、今日调用、用户数

- 📋 命令排行:可视化展示各命令使用频率

- 📝 实时日志:查看 Bot 运行日志(支持 SSE 实时推送)

- 🔄 一键重启:无需 SSH,直接在面板重启 Bot

- 🔐 密码管理:可在面板中修改登录密码

日志管理

Bot 使用 Winston 进行日志管理:

- 日志文件位于 data/logs/ 目录

- 自动按天轮转,保留 14 天

- 可在 Web 面板查看和清空

## ❓ 常见问题

Q: Bot 启动失败,提示 Token 无效?

A: 请检查:

1. Token 是否正确复制(不要漏掉任何字符)

2. 是否已在其他地方运行同一个 Bot(一个 Token 只能单实例运行)

### Q: 无法连接 Telegram API?

A: 可能是网络问题:

1. 确认服务器能访问 api.telegram.org

2. 如果在国内服务器,需要配置 API 代理

3. 尝试使用 ping api.telegram.org 测试连通性

Q: AI 功能返回错误?

A: 检查 OpenAI 配置:

1. API Key 是否正确

2. API Base 地址是否可访问

3. 账户余额是否充足

### Q: RSS 订阅没有推送?

A: 可能的原因:

1. RSS 源本身没有更新

2. 检查关键词过滤设置(如果设置了关键词,只有匹配的才会推送)

3. 查看日志确认是否有解析错误

### Q: 如何备份数据?

A: 所有数据都在 data/ 目录下:

bash

# 备份

cp -r data/ data_backup/

# 恢复

cp -r data_backup/* data/

docker-compose restart

🎯 总结

通过这篇教程,你应该已经成功部署了一个功能强大的 Telegram 多功能机器人。这个项目的优势在于:

1. 开箱即用:Docker 一键部署,无需复杂配置

2. 可视化管理:Web 面板管理配置,无需 SSH

3. 功能丰富:涵盖日常使用的各种场景

4. 易于扩展:模块化设计,添加新功能非常简单

5. 数据持久:SQLite + 文件存储,重启不丢失

如果在使用过程中遇到问题,欢迎在 GitHub 上提 Issue。如果觉得这个项目对你有帮助,请给个 ⭐ Star!

项目地址https://github.com/debbide/tgbot](https://github.com/debbide/tgbot

> 📝 作者按:这个机器人最初是我自己用的,后来发现功能越来越多,索性开源出来。希望能帮到同样有需求的朋友。如果你有好的功能建议,也欢迎 PR!

评论