一个基于 Telegram 的文件分享机器人,原仓库github
前置准备
在 Telegram 上创建一个 Bot:通过 Telegram 的 BotFather 获取一个
BOT_TOKEN。获取 Telegram 的
API_ID和API_HASH:在 my.telegram.org 注册即可。搭建一个 MongoDB 数据库(例如通过 MongoDB Atlas 或你自建)并获取连接字符串
MONGO_DB_URL。确保你的服务器能长期在线、且有一个域名(因为你用了 Cloudflare 可做反向代理/安全加固)
确保安装 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.使用守护进程配置启动示例(建议)
注意事项
运行目录一定要填 Bot 的目录,否则守护进程找不到
.env或依赖。启动命令必须使用虚拟环境中的 Python,不能直接写
python3。进程数量默认 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 或更严格。机器人权限与频道权限要合理控制。
评论