转发机器人 的功能介绍和使用说明,请前往 GitHub 项目主页查看。

项目地址: AhFeil/extract_forward_tgbot: 存储转发给它的消息,并能推送到网页,方便查看编辑信息,附带拼接图片、视频转 GIF 功能 (github.com)

文章只会在机器人有大变动后更新,最新的参数以 GitHub 为准。

适用系统:最简安装只需要系统支持 Docker,文章中使用 Debian 系统

走通 Docker 部署预计时间:10 分钟

最简安装,Docker 安装 转发机器人

前置准备

  1. 注册一个 Telegram 机器人, 获得 token
  2. (可选)获取自己 Telegram 账户的 chat_id,不填就不能运行管理员命令

全复制并执行 ,一键创建工作目录

myserve="ef_tgbot"mkdir -p ~/myserve/$myserve && cd ~/myserve/$myserve && mkdir -p backup forward_message configs

根据注释自定义下面的配置文件,然后复制一键即可保存到机器上

cat > configs/config.yaml << EOF is_production: true chat_id: 2066666604 # 你的 tg 用户 ID,会作为管理员,不能为空,没有随便填 bot_token: 5366666619:AAGG3rvfly2comtechniqueTIzc8y5z2pY9xmY push_dir: https://forward.vfly2.eu.org/ # 推送路径,最简安装这里选择一个网络记事本的网址,这里使用我搭建的,可以不用改 # 下面的每一个都可以省略 special_channel: image: [woshadiao, shadiao_refuse] # 转发这里的频道的消息给机器人,机器人会接收视频和图片 process_file: gif_max_width: 300 # 视频转的 GIF 的最大宽度 video_max_size: 25 # 超过这个大小的视频不接收,单位是 MB EOF

Alt Text

Alt Text

无须更改,执行保存 docker-compose.yml 到机器上

cat > docker-compose.yml << EOF --- version: "3" services: tgbot: image: ahfeil/extract_forward_tgbot:latest container_name: efTGbot restart: always volumes: - ./configs:/ef_tgbot/configs - ./backup:/ef_tgbot/backup - ./forward_message:/ef_tgbot/forward_message EOF

拉取镜像

docker compose pull

启动机器人(这时就可以在 Telegram 上试用机器人了)

docker compose up -d

如果有问题,用这个查看日志

docker logs efTGbot

关闭机器人

docker compose down

原生部署转发机器人

  1. 需要先部署 网页记事本 ,且假设其 _tmp 目录位于 /var/www/webnote/_tmp/ ,推荐参考本站文章:极简网页记事本 。下面的流程是按照它的「原生安装」进行的,Docker 安装下 _tmp 目录读写权限问题棘手,不过全用 root 倒也能运行。
  2. 注册一个 Telegram 机器人, 获得 token
  3. (可选)获取自己 Telegram 账户的 chat_id

前置准备

推荐使用普通用户,这里假设用户名为 vfly2,并在家目录下的 pythonServe 放置工作目录。

创建目录 /home/vfly2/pythonServe

mkdir -p ~/pythonServe/ && cd ~/pythonServe/

拉取仓库(并创建备份和保存目录,这是必需的):

git clone https://github.com/AhFeil/extract_forward_tgbot.git && \ cd extract_forward_tgbot && mkdir backup forward_message # 创建备份目录和保存目录

安装环境和依赖( Python versions 3.8+ )

sudo apt update sudo apt install python3 python3-pip python-venv # 手动安装 ffmpeg ,检查安装情况 ffmpeg -version sudo apt install ffmpeg

为系统安装中文字体,如果不使用“添加说明文字”功能,也可以不装。

下载字体文件

curl -O https://raw.githubusercontent.com/gasharper/linux-fonts/master/simsun.ttc

把字体文件放在一个合适的目录。一般来说,用户自定义的字体可以放在 ~/.fonts/(针对当前用户)或者 /usr/share/fonts/(对所有用户生效)这两个目录下。

font_dir=/usr/share/fonts/chinese sudo mkdir -p $font_dir && sudo mv simsun.ttc $font_dir && cd $font_dir

更新字体缓存,这样系统才能够识别和使用新的字体

sudo fc-cache -fv

查看是否有添加成功

fc-list :lang=zh

安装

创建虚拟环境

python3 -m venv .env

激活虚拟环境

source .env/bin/activate

安装依赖的库

pip install -r requirements.txt

根据注释自定义下面的配置文件,然后复制一键即可保存到机器上

cat > config.yaml << EOF is_production: true chat_id: 2111111114 # 你的 tg 用户 ID,会作为管理员,不能为空,没有随便填 bot_token: 6111111110:AAxxxxxvfly2xxxx9iGxxLa_atxxcomxuNU push_dir: /var/www/webnote/_tmp/ # 推送路径,这里使用同机器搭建的网络记事本 domain: https://forward.vfly2.eu.org/ # 网络记事本的网址,最后以 / 结尾 # path: # 如果是一个人用,可以在这里规定推送时的路径,也可以用 /set 命令实现 # 下面的每一个都可以省略 special_channel: image: [woshadiao, shadiao_refuse] # 转发这里的频道的消息给机器人,机器人会接收视频和图片 process_file: gif_max_width: 300 # 视频转的 GIF 的最大宽度 video_max_size: 25 # 超过这个大小的视频不接收,单位是 MB EOF

先运行一下,测试机器人是否正常工作(可以在 Telegram 上向机器人转发消息,检查功能)

python extract_forward_tgbot.py
这时除了不能推送保存的消息到网页之外,其他功能应该都正常。不能推送是因为 vfly2 没有写入权限到 /var/www/webnote/_tmp/

设置权限

设置 /var/www/webnote/_tmp/ 权限为 775,组改成 vfly2,

sudo chown www-data:vfly2 /var/www/webnote/_tmp sudo chmod 775 /var/www/webnote/_tmp

且将该目录下新创建的文件默认权限设为 664 ,组为 vfly2

sudo apt-get update && sudo apt-get -y install acl && \ sudo setfacl -d -m u:www-data:rwx,g:vfly2:rwx,o::r /var/www/webnote/_tmp/
这时候可以再运行一次上面的命令,应该就能够推送转存了。

使用 systemd 守护进程

sudo vim /lib/systemd/system/extract_forward_tgbot.service

根据实际情况,修改 WorkingDirectory、User、Group、ExecStart 这四个就可以了。

[Unit] Description=extract_forward_tgbot Server After=network.target [Service] WorkingDirectory=/home/vfly2/pythonServe/extract_forward_tgbot # 修改为实际目录 User=vfly2 # 修改 Group=vfly2 # 修改 Type=simple ExecStart=/home/vfly2/pythonServe/extract_forward_tgbot/.env/bin/python /home/vfly2/pythonServe/extract_forward_tgbot/extract_forward_tgbot.py # 修改 ExecStop=/bin/kill -s HUP $MAINPID Environment=PYTHONUNBUFFERED=1 RestartSec=15 Restart=on-failure [Install] WantedBy=default.target
sudo systemctl daemon-reload
sudo systemctl enable --now extract_forward_tgbot
sudo systemctl status extract_forward_tgbot
sudo systemctl stop extract_forward_tgbot
sudo systemctl start extract_forward_tgbot

迁移

只需要转移旧的数据文件 2 个和配置文件即可,在项目目录下的 forward_message 中

更新

重启机器人时,推荐先用 /shutdown<span> </span>命令,保存通过 /set 设置的参数,再重启。

先停止运行

sudo systemctl stop extract_forward_tgbot cd ~/pythonServe/extract_forward_tgbot

在工作目录下,用 Git 拉取最新版本:

git pull

然后重启(如果报错,估计是修改了其他依赖库,可进入虚拟环境,安装库)

sudo systemctl start extract_forward_tgbot sleep 3 sudo systemctl status extract_forward_tgbot


你在颓废的时候别人都在努力哦~♪---椎名奈緒
如果觉得我的文章对你有用,请随意赞赏

本文标题:Telegram 转发机器人 的安装步骤

本文链接:https://oior.net/archives/109.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。