搭建开源的 Telegram 人形自走机器人 PagerMaid

  1. 1. Pagermaid 简介
  2. 2. Pagermaid-Pyro 和 Pagermaid-Modify 双版本
    1. 2.1. Pagermaid-Modify 脚本安装
    2. 2.2. Pagermaid-Pyro 脚本安装
  3. 3. 环境要求
  4. 4. 搭建
    1. 4.1. 开放端口
    2. 4.2. 拉取项目
    3. 4.3. 安装软件包
    4. 4.4. 修改配置文件
    5. 4.5. 登录账号
    6. 4.6. 进程守护及后台运行
  5. 5. 插件安装
  6. 6. 常见问题
    1. 6.1. 插件相关
    2. 6.2. 使用相关

写在前面

本教程基于 Ubuntu 20.04 系统,搭建 Pagermaid-Pyro ,其他系统请自行修改命令安装。理论上支持 AMD64 和 ARM 架构。 Windows 系统请参考 这篇文章
GitHub 开源地址:https://github.com/TeamPGM/PagerMaid-Pyro
GitLab 开源地址:https://gitlab.com/Xtao-Labs/PagerMaid-Pyro
官方网站:https://xtaolabs.com/
官方 Telegram 频道:@PagerMaid_Modify

Pagermaid 简介

PagerMaid 是一个开源的 Telegram 人形自走 Bot 方案,基于 Python 开发,功能强大而丰富,它通过响应账号通过其他客户端发出的命令来自动执行一系列任务,可以帮助你打造专属的便利功能。

隐私政策与免责声明
您在使用本项目代码时即表示您已经同意本隐私协议并且允许我们以评估负载和修复代码的目的记录您 Bot 的在线状态和报错文件。
除可能使用的信息之外,我们不会记录与收集任何信息。
本项目代码完全遵循此隐私政策,您可以随时在此项目中审查我们的源代码。
本项目无法承诺 Userbot 行为不会被 Telegram 官方滥权,也无法承诺所有功能能在自建项目上成功运行。
使用 Userbot 所带来的损失或可能产生的任何责任由搭建者自行承担。

Pagermaid-Pyro 和 Pagermaid-Modify 双版本

注:Pagermaid-Pyro 由于命令与旧版 Pagermaid-Modify 不同,故可以同时安装两个版本。
按照本教程的步骤会将 Pagermaid-Pyro 安装至 /var/lib/pgp 目录下。
这样可以实现双版本同时运行,同时也可以在不同目录同时搭建以实现一机多账号,例如:
/var/lib/pgp1, /var/lib/pgp2, …

Pagermaid-Modify 脚本安装

搭建 Pagermaid-Modify 可以使用下面的一键脚本,这里不展开讲。

1
wget https://gitlab.com/Xtao-Labs/pagermaid-modify/-/raw/master/install.sh -O install.sh && chmod +x install.sh && bash install.sh

使用该脚本会将 Pagermaid-Modify 安装至 /var/lib/pagermaid 目录下。
本文以 Pagermaid-Pyro 为主,Pagermaid-Modify 安装方法不在本文考虑范围内。都一键脚本了还要啥教程(

Pagermaid-Pyro 脚本安装

一键脚本:

1
wget https://raw.githubusercontent.com/TeamPGM/PagerMaid-Pyro/development/utils/install.sh -O install.sh && chmod +x install.sh && bash install.sh

使用该脚本会将 Pagermaid-Pyro 安装至 /var/lib/pagermaid 目录下。
Docker 版一键脚本:

1
wget https://raw.githubusercontent.com/TeamPGM/PagerMaid-Pyro/development/utils/docker.sh -O docker.sh && chmod +x docker.sh && bash docker.sh

Docker 版手动部署可以看这篇文章:人形自走 BOT PagerMaid 在 ARM 平台的搭建
使用 Docker 版同样可以实现一机多账号,新建多个容器即可,这里不展开讲。

环境要求

Ubuntu>=16.04 / Debian>=9 (已在该环境下通过测试,系统低于此版本不代表无法安装)
Python>=3.8
Python 版本查询: Python3 -V
如版本低于 3.8 请自行搜索教程更新 Python 版本。

搭建

开放端口

由于需要与 Telegram 服务器通信,首先开放服务器端口。

1
2
3
4
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

如果使用了云服务,请去控制台再次开放端口。 (这里使用的是 Microsoft Azure ,其他 IDC 请自行解决)

拉取项目

在拉取项目之前,首先更新 git ,否则之后可能出现无法更新的情况。

1
sudo apt install --upgrade git -y

拉取项目至 /var/lib/pgp 目录。

1
2
sudo -i
cd /var/lib && git clone https://github.com/TeamPGM/PagerMaid-Pyro.git pgp && cd pgp

出现以下提示即可进入下一步。

安装软件包

首先更新 apt 包:

1
2
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv imagemagick libwebp-dev neofetch libzbar-dev libxml2-dev libxslt-dev tesseract-ocr tesseract-ocr-all -y
软件包说明

python3-pip 必须 用于安装 Python 依赖。
python3-venv 必须 用于生成 Python 虚拟环境。
imagemagick 非必须 用于处理图片。
libwebp-dev 非必须 用于处理图片。
neofetch 非必须 用于显示系统信息, sysinfo 命令需要用到。
libxslt-dev 非必须 用于处理二维码信息。
libxml2-dev 非必须 用于解析 XML 文件。
libxslt-dev 非必须 用于解析 XML 文件。
tesseract 非必须 图片光学字符识别。
以上软件包建议全部安装,不安装会影响部分功能的使用。

安装软件包过程中,请等待一段时间,安装完成后,继续进行以下操作。
首先启用虚拟环境:

1
2
python3 -m venv venv
source venv/bin/activate

可以看到命令行前面多了一个 (venv) ,即表示启用成功。

更新一下 pip:

1
python3 -m pip install --upgrade pip


接下来安装 Python 依赖包:

1
pip3 install -r requirements.txt

请确保以上命令输入时均处于虚拟环境中,即有 (venv) 标志。
若退出了虚拟环境,可以使用以下命令重新进入虚拟环境:

1
source venv/bin/activate

如果出现 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt' 报错,请先检查当前目录是否为 /var/lib/pgp ,如果位于该目录仍然报错,请重新执行 拉取项目 步骤。
出现以下提示代表安装成功。

修改配置文件

此步骤为可选步骤

执行以下命令,将配置文件 config.gen.yml 复制一份并且命名为 config.yml

1
cp config.gen.yml config.yml

修改 config.yml

1
vim config.yml

不会使用 vim 的请自行查找教程,这里不提供。

  1. API配置 (可选)
    在最新版本的 Pagermaid-Pyro 中添加了默认的 api_idapi_hash ,故下方生成 API 与填写相关配置项为可选操作

    配置文件中 api_idapi_hash 缺省则使用下方的 API。
    1
    2
    api_id = 21724
    api_hash = "3e0cb5efcd52300aec5994fdfc5bdc16"
    Telegram 官网 ,登录后点击 API development tools ,按提示填写信息,生成 API (非必须)。

    申请 API 属于高危操作,特别是新注册的 Telegram 账号和使用 VoIP 语音号码注册的账号会加大封号概率,如被封号,请尽快向客服申诉申请解封。同时请勿将 API 泄露给他人。
    怂别用,用别怂。

    生成后,只需要复制 api_id 和 api_hash 值并分别填入,编辑时请注意不要删掉引号
    当然也可以使用部分程序的 API Key (公开的 API Key 可能会受到限制,导致无法登录,此时仍需自行申请 API 。)
    公开的API

    Telegram Android

    1
    2
    api_id = "4"
    api_hash = "014b35b6184100b085b0d0572f9b5103"
    Telegram Desktop
    1
    2
    api_id = "2040"
    api_hash = "b18441a1ff607e10a989891a5462e627"
    Telegram Messenger CLI
    1
    2
    api_id = "2899"
    api_hash = "36722c72256a24c1225de00eb6a1ca74"
    Telegram Swift
    1
    2
    api_id = "10840"
    api_hash = "33c45224029d59cb3ad0c16134215aeb"
    Telegram Messenger Plus
    1
    2
    api_id = "16623"
    api_hash = "8c9dbfe58437d1739540f5d53c72ae4b"
    Telegram X
    1
    2
    api_id = "21724"
    api_hash = "3e0cb5efcd52300aec5994fdfc5bdc16"
    Telegram Web K
    1
    2
    api_id = "1025907"
    api_hash = "452b0359b988148995f22ff0f4229750"

    按以上图片中格式填写即可。
  2. 日志及报错信息记录 (可选) :
    1
    2
    log: "False"    # False 代表禁用,True 代表启用
    log_chatid: "503691334" # 这里填写记录用的群组或频道ID
  3. 代理 (可选) :

    代理配置按需填写即可。
    1
    2
    3
    4
    5
    6
    7
    proxy_addr: ""    # socks5 代理地址
    proxy_port: "" # socks5 代理端口
    http_addr: "" # http 代理地址
    http_port: "" # http 代理端口
    mtp_addr: "" # mtp 代理地址
    mtp_port: "" # mtp 代理端口
    mtp_secret: "" # mtp 代理密钥
  4. 二维码登录 (可选) :
    1
    qrcode_login: "False"    # False 代表禁用,True 代表启用
    config.yml 中其他字段暂不做说明。

登录账号

请确保仍在虚拟环境中,即有 (venv) 标志,然后运行以下命令:

1
python3 -m pagermaid

此步需要填入完整的电话号码 (eg:+18888888888,需要带上国际区号) 然后 Telegram 会向你的其他客户端发送验证码,少数用户会向手机号发送验证码,填入验证码后,回车,如有两步验证密码,则再输入两步验证密码即可。

1
2
3
4
5
6
7
8
Enter phone number or bot token:    #此处填入手机号
Is "+18888888888" correct? (y/N): # 号码显示正确输入 y ,错误输入 n
The confirmation code has been sent via Telegram app
Enter confirmation code: # 此处输入 Telegram APP 中收到的验证码
# 如果设置了两步验证,则会出现以下提示
The two-step verification is enabled and a password is required
Password hint: None
Enter password (empty to recover): # 此处输入两步验证密码


出现已启动提示,代表登录成功,此时可以去 Telegram 任意聊天发送 ,help 进行测试。

如果在配置文件中启用了二维码登录,即配置了 qrcode_login: "True" ,可以进入 菜单栏-Settings-Devices ,点击 Link Desktop Device ,扫描终端中显示的二维码即可登录。
受部分终端显示限制,二维码可能无法正常显示,可以下载运行目录下的 qrcode.png 文件扫码登录,或复制二维码下方以 tg://login?token= 开头的链接至任意聊天,点击后根据提示登录。

请注意保护好您已登录的 pagermaid.session (该文件在 Pagermaid 运行目录下) 。此文件可以登录账号,请不要分享给他人使用。

进程守护及后台运行

首先按下 Ctrl 键和 C 键停止运行
然后输入以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat <<'TEXT' > /etc/systemd/system/pgp.service
[Unit]
Description=PagerMaid-Pyro telegram utility daemon
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
WorkingDirectory=/var/lib/pgp
ExecStart=/var/lib/pgp/venv/bin/python3 -m pagermaid
Restart=always
TEXT


设置完成后启动程序:

1
systemctl start pgp

设置为开机自启:

1
systemctl enable pgp

如果遇到问题,请使用下方命令查看输出以排除问题:

1
systemctl status pgp

至此 Pagermaid-Pyro 搭建完成,enjoy ~

如需停止程序,使用以下命令即可:

1
systemctl stop pgp

插件安装

安装后只能使用自带功能,但 Pagermaid 支持通过插件扩充功能。

官方 GitHub 插件仓库:https://github.com/TeamPGM/PagerMaid_Plugins_Pyro
官方 GitLab 插件仓库:https://gitlab.com/Xtao-Labs/PagerMaid_Plugins_Pyro
请选择 v2 分支,master 分支为 Pagermaid-Modify (旧版) 的插件,二者插件不兼容。


如上图,插件名即为文件夹名称,在任意聊天中发送 ,apt install <插件名> 即可安装。
如需安装第三方/自制插件,发送插件 Python 文件至任意聊天,然后回复该文件并发送 ,apt install 即可安装。

常见问题

插件相关

  1. 如安装插件时提示错误但无任何错误日志,可能是网络问题,请按以下步骤解决:
    1.将 config.ymlgit_source 修改为以下内容:

    1
    git_source: "https://gitlab.com/Xtao-Labs/PagerMaid_Plugins_Pyro/-/raw/v2/"

    2.修改后使用 ,restart 命令或在终端中输入 systemctl restart pgp 使程序重启。

  2. 如安装插件后遇到插件加载失败的情况 (如图所示) ,请按照以下步骤排除解决:

    1.如您是直接在聊天中回复了一个插件文件并安装,可能安装的是旧版插件,新旧插件无法兼容。
    2.重新安装插件。
    3.使用 ,restart 命令或在终端中输入 systemctl restart pgp 使程序重启。
    4.在任意对话中发送 ,sh rm -rf ./plugins/* 删除全部插件,然后重新安装插件。
    5.检查 Python 版本是否为 Python 3.8 或更高版本。
    6.重新搭建 PagerMaid-Pyro 。

使用相关

  1. 使用过程中进行了插件安装/升级等需要重启的操作后停止运行:
    请重新执行上文 进程守护及后台运行 操作。

以上问题请先自行操作解决,如仍然不能解决,请前往 PagerMaid Telegram 群组 反馈。