1、安装依赖
pip install pyTelegramBotAPI pymysql
2、创建数据库
SQL:
CREATE DATABASE bot_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3、修改配置
TOKEN:机器人 Token
ADMIN_ID:你的 Telegram ID
DB_CONFIG:数据库账号密码
运行:
python bot.py
二、生成 systemd 服务 让机器人后台运行
1、nano /etc/systemd/system/bot.service
粘贴以下内容:
[Unit]
Description=Telegram PanLink Bot
Documentation=https://t.me/yourbot
After=network-online.target mariadb.service
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/python3 /root/bot.py
Restart=always
RestartSec=5
TimeoutStopSec=10
KillMode=mixed
# 防止日志爆炸
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
需要你确认 2 个地方:
WorkingDirectory=/root→ 改成你bot.py所在目录ExecStart=/usr/bin/python3 /root/bot.py→ 确保路径正确
2. 启用并启动服务
systemctl daemon-reload
systemctl enable bot
systemctl start bot
3. 查看状态与日志
# 状态 systemctl status bot
# 实时日志 journalctl -u bot -f
# 重启 systemctl restart bot
# 停止 systemctl stop bot
4. 如果你用的不是 root 运行
把 User=root 改成你的普通用户即可,例如:User=debian
三、数据库自动备份脚本
1. 创建备份脚本
nano /usr/local/bin/mysql_backup.sh
把下面内容完整粘贴进去:
#!/bin/bash # 数据库配置
DB_USER=”root”
DB_PASS=”你的数据库密码”
DB_NAME=”telebot_db” BACKUP_DIR=”/backup/mysql”
# 日期格式
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_FILE=”$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz”
# 创建备份目录
mkdir -p “$BACKUP_DIR”
# 备份并压缩
mariadb-dump -u”$DB_USER” -p”$DB_PASS” –databases “$DB_NAME” | gzip > “$BACKUP_FILE”
# 删除7天前的备份
find “$BACKUP_DIR” -type f -name “*.sql.gz” -mtime +7 -delete
只改这 3 处:
DB_PASS="你的数据库密码"DB_NAME="bot_db"(和你 bot 里的库名一致)- 其他不用动
2. 赋予执行权限
chmod +x /usr/local/bin/mysql_backup.sh
3. 测试一次备份(重要)
/usr/local/bin/mysql_backup.sh
执行完去看有没有生成文件:
ls /backup/mysql/
4. 设置每天凌晨 2 点自动备份(crontab)
crontab -e
在最后添加一行:
0 2 * * * /usr/local/bin/mysql_backup.sh
保存退出。
5. 查看备份是否生效
# 看定时任务是否添加成功
crontab -l
# 看备份文件
ls -lh /backup/mysql/
6. 恢复数据库的命令(备用)
gunzip < /backup/mysql/telebot_db_xxx.sql.gz | mariadb -uroot -p密码 telebot_db
四、备份好上传到Tg
1. 先安装发送工具(curl 一般已自带)
apt update && apt install -r curl gzip
2. 新建备份 + 发 TG 脚本
nano /usr/local/bin/mysql_backup_tg.sh
粘贴下面内容,只改配置区即可直接用:
#!/bin/bash
# ===================== 配置区(必须改)=====================
# 数据库信息
DB_USER=”root”
DB_PASS=”你的数据库密码”
DB_NAME=”telebot_db”
# 备份存放目录
BACKUP_DIR=”/backup/mysql”
# Telegram 配置
TG_BOT_TOKEN=”你的机器人Token”
TG_CHAT_ID=”你的聊天ID/群组ID”
# ==========================================================
# 日期与文件名
DATE=$(date +%Y-%m-%d_%H-%M-%S) BACKUP_FILE=”$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz”
# 创建目录
mkdir -p “$BACKUP_DIR”
# 备份数据库并压缩
mariadb-dump -u”$DB_USER” -p”$DB_PASS” –databases “$DB_NAME” | gzip >”$BACKUP_FILE”
# 发送到 Telegram
curl -F “chat_id=$TG_CHAT_ID” \
-F “document=@$BACKUP_FILE” \
-F “caption=✅ 数据库自动备份完成
📅 时间:$DATE
🗄 库名:$DB_NAME” \ https://api.telegram.org/bot$TG_BOT_TOKEN/sendDocument
# 删除7天前的备份
find “$BACKUP_DIR” -type f -name “*.sql.gz” -mtime +7 -delete
3. 赋予执行权限
chmod +x /usr/local/bin/mysql_backup_tg.sh
4. 测试运行一次(看是否能收到备份文件)
/usr/local/bin/mysql_backup_tg.sh
正常情况:
本地 /backup/mysql/ 出现 .sql.gz
你的 Tg 会收到文件 + 标题
5. 设置每天凌晨 2 点自动执行
crontab -e
添加一行:
0 2 * * * /usr/local/bin/mysql_backup_tg.sh
查看任务:crontab -l
6. 如何获取 TG_CHAT_ID
给机器人发任意消息,然后浏览器访问:
https://api.telegram.org/bot你的Token/getUpdates
找到 chat id 数字就是。
7. 配套你之前的 systemd 服务
systemctl status bot
journalctl -u bot -f
