一个基于 Telegram 的文件分享机器人,原仓库github

前置准备

  1. 在 Telegram 上创建一个 Bot:通过 Telegram 的 BotFather 获取一个 BOT_TOKEN

  2. 获取 Telegram 的 API_IDAPI_HASH:在 my.telegram.org 注册即可。

  3. 搭建一个 MongoDB 数据库(例如通过 MongoDB Atlas 或你自建)并获取连接字符串 MONGO_DB_URL

  4. 确保你的服务器能长期在线、且有一个域名(因为你用了 Cloudflare 可做反向代理/安全加固)

  5. 确保安装 Python 环境,以及服务器上已安装 git、python3、pip 等基础工具。

部署步骤

1. 克隆仓库

cd /path/to/your/deployment/folder
git clone https://github.com/zawsq/Teleshare.git
cd Teleshare

2. 配置环境变量

复制示例 .env_example,创建 .env 文件并填入你的值。比如:

API_ID=你的值
API_HASH=你的值
BOT_TOKEN=你的值
MONGO_DB_URL=你的 mongo 连接字符串
BACKUP_CHANNEL=你的 Telegram 频道ID
ROOT_ADMINS_ID=[你的管理员ID, …]
PRIVATE_REQUEST=False
PROTECT_CONTENT=True
FORCE_SUB_CHANNELS=[频道ID1,频道ID2]
...

3. 安装依赖

推荐使用虚拟环境(venv 或 poetry)。例如:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

(仓库含有 requirements.txt

4. 启动机器人

1.在激活虚拟环境后:

python -m bot.main

机器人应开始运行。你可以在 Telegram 中发送 /start 命令来测试。

2.使用守护进程配置启动示例(建议)

项目

填写示例

说明

名称

teleshare

进程名称,只能英文

启动用户

root

以哪个用户运行,如果你用 root 部署就填 root

运行目录

/www/wwwroot/Teleshare

Bot 项目所在目录

启动命令

/www/wwwroot/Teleshare/venv/bin/python -m bot.main

使用虚拟环境 Python 运行 Bot,必须写绝对路径

进程数量

1

Bot 只需 1 个主进程即可

备注

Teleshare Bot

可写任何描述,方便管理


注意事项

  1. 运行目录一定要填 Bot 的目录,否则守护进程找不到 .env 或依赖。

  2. 启动命令必须使用虚拟环境中的 Python,不能直接写 python3

  3. 进程数量默认 1 即可,多进程不适合 Bot(会导致同一个 Bot ID 重复启动)。


这样配置好后,宝塔守护进程会自动:

  • 开机启动 Bot

  • 如果 Bot 崩溃,自动重启

3.(可选)设置为后台服务

你可以用 systemd 创建服务,示例 systemd 单元:

[Unit]
Description=Teleshare Bot
After=network.target

[Service]
User=你的用户名
WorkingDirectory=/path/to/Teleshare
EnvironmentFile=/path/to/Teleshare/.env
ExecStart=/path/to/Teleshare/venv/bin/python -m bot.main
Restart=always

[Install]
WantedBy=multi-user.target

保存为 /etc/systemd/system/teleshare.service,然后:

sudo systemctl daemon-reload
sudo systemctl enable teleshare
sudo systemctl start teleshare

5. (可选)使用 Docker / 容器部署

仓库里也有 Dockerfile。如果你更喜欢容器化部署,可以:

docker build -t teleshare .
docker run -d --env-file .env --name teleshare teleshare

这样更便于迁移和管理。

6. 配合 Cloudflare+域名安全设置

  • 如果你打算通过 Telegram Webhook 或类似功能暴露域名,建议使用 Cloudflare (你已开启“小云朵”),确保服务前端有 HTTPS。

  • 在宝塔或 1Panel 中绑定你的域名、配置 SSL 证书(如 Let's Encrypt)以强化安全。

  • 注意:由于机器人主要是通过 Telegram API 通信,不一定需要暴露大量端口。但如果你还要额外使用 Web 接口或管理面板,就要做好防火墙/访问控制。


特别提示与注意事项

  • 确保 BACKUP_CHANNEL 为一个你有管理权限的 Telegram 频道,用于备份用户上传的文件。

  • 若设置 FORCE_SUB_CHANNELS(强制订阅频道),请确保频道正确且机器人有权限。

  • 如果你选择开启 PROTECT_CONTENT=True,则机器人发送的文件将无法被转发或保存。根据你的需求决定。

  • 如果你期望高并发或大量用户:需要注意服务器的 CPU/内存、MongoDB 性能、网络带宽。

  • 仓库提到 “TODO: Database and Option refactor” 表明还在维护中,若碰到 bug 需要自行调试。

  • 安全性:尽量不要让 .env 文件暴露,权限设置为 600 或更严格。机器人权限与频道权限要合理控制。