简介

PagerMaid-Pyro 是一个开源的 Telegram 人形自走 Bot 方案,功能强大而丰富,可以帮助你打造专属的便利功能。

这里主要详细说明搭建的流程和注意事项,一键脚本由于不同环境问题较多暂不推荐。

由于资金有限和部分依赖包的安装方便性,这里主要提供 ubuntu 20.04 、centos7 和 Archlinux 的安装过程。(不推荐Docker安装)

功能

远程管理

输入 ,sh 命令 就可快速通过 Telegram 管理自己的服务器。

扩展

安装插件使用 ,apt install 插件名,快速安装,方便使用。

运行状态

随时使用 ,status 监控 bot 是否正常运行。

时间

您可以使用地区名和数字查询某时区时间 ,time 。

快速更新

主程序随时可以使用 ,update 来检查更新。

手动搭建

Ubuntu20.04

拉取项目

本项目托管在 github ,所以您首先需要检查您是否已经安装 git 软件包。并且我们发现当 git 软件包版本过低时,无法实现程序的自动更新,所以您需要首先升级 git 软件包:

sudo apt install --upgrade git -y

从仓库拉取项目

cd /var/lib && git clone https://github.com/TeamPGM/PagerMaid-Pyro.git pagermaid && cd pagermaid

安装软件包

neofetch

此软件包用于显示系统信息,如您没有显示系统信息需求,您可以无需安装此软件包。

sudo apt install neofetch -y

zbar

此软件包用于处理二维码信息,如您没有处理二维码信息需求,您可以无需安装此软件包。

sudo apt install libzbar-dev -y

Pip

此软件包为必须依赖包,用于安装 python 依赖。

sudo apt install python3-pip -y

安装依赖包

pip3 install -r requirements.txt

修改配置文件

将配置 config.gen.yml 文件复制一份并且命名为 config.yml

cp config.gen.yml config.yml

然后去 telegram 官网 生成 api 填入配置文件内,我们只需要复制 api id 和 api_hash 值 填入 api_key 和 api_hash 。

vi config.yml
按 i 进入编辑模式,粘贴好后,按下 esc 输入 shift 加冒号,输入 wq 保存退出

登录账号

python3 -m pagermaid

此步需要填入完整的电话号码(eg:+12569986522)然后 tg 会发给你的其他客户端发送验证码,填入验证码后,回车,如有两步验证密码,则再输入两步验证密码即可。

停止运行:

ctrl + c

请注意保护好您已登录的 pagermaid.session 。此文件可以进行账号所有操作,请不要分享给他人使用。

进程守护

此步骤可以方便 pagermaid 的自动运行,您无需在 pagermaid 意外退出后重新登录主机进行操作。

cat <<'TEXT' > /etc/systemd/system/pagermaid.service
[Unit]
Description=PagerMaid-Pyro telegram utility daemon
After=network.target

[Install]
WantedBy=multi-user.target

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

常用指令

启动程序:systemctl start pagermaid

设置为开机自启:systemctl enable pagermaid

停止程序:systemctl stop pagermaid

Centos 7

拉取项目

本项目托管在 github ,所以您首先需要检查您是否已经安装 git 软件包。并且我们发现当 git 软件包版本过低时,无法实现程序的自动更新,所以您需要首先升级 git 软件包:

sudo yum install git -y

从仓库拉取项目

cd /var/lib && git clone https://github.com/TeamPGM/PagerMaid-Pyro.git pagermaid && cd pagermaid

安装软件包

neofetch

此软件包用于显示系统信息,如您没有显示系统信息需求,您可以无需安装此软件包。

sudo yum install epel-release -y

curl -o /etc/yum.repos.d/konimex-neofetch-epel-7.repo https://copr.fedorainfracloud.org/coprs/konimex/neofetch/repo/epel-7/konimex-neofetch-epel-7.repo

sudo yum install neofetch -y

zbar

此软件包用于处理二维码信息,如您没有处理二维码信息需求,您可以无需安装此软件包。

sudo yum install zbar-devel -y

sudo yum install zbar -y

安装依赖包

pip3 install -r requirements.txt

修改配置文件

将配置 config.gen.yml 文件复制一份并且命名为 config.yml

cp config.gen.yml config.yml

然后去 telegram 官网 生成 api 填入配置文件内,我们只需要复制 api id 和 api_hash 值 填入 api_key 和 api_hash 。

vi config.yml
按 i 进入编辑模式,粘贴好后,按下 esc 输入 shift 加冒号,输入 wq 保存退出

登录账号

python3 -m pagermaid

此步需要填入完整的电话号码(eg:+12569986522)然后 tg 会发给你的其他客户端发送验证码,填入验证码后,回车,如有两步验证密码,则再输入两步验证密码即可。

停止运行:

ctrl + c

请注意保护好您已登录的 pagermaid.session 。此文件可以进行账号所有操作,请不要分享给他人使用。

进程守护

此步骤可以方便 pagermaid 的自动运行,您无需在 pagermaid 意外退出后重新登录主机进行操作。

cat <<'TEXT' > /etc/systemd/system/pagermaid.service
[Unit]
Description=PagerMaid-Pyro telegram utility daemon
After=network.target

[Install]
WantedBy=multi-user.target

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

常用指令

启动程序:systemctl start pagermaid

设置为开机自启:systemctl enable pagermaid

停止程序:systemctl stop pagermaid

Archlinux

拉取项目

本项目托管在 github ,所以您首先需要检查您是否已经安装 git 软件包。并且我们发现当 git 软件包版本过低时,无法实现程序的自动更新,所以您需要首先升级 git 软件包:

sudo pacman -S git

从仓库拉取项目

cd /var/lib && git clone https://github.com/TeamPGM/PagerMaid-Pyro.git pagermaid && cd pagermaid

安装软件包

neofetch

此软件包用于显示系统信息,如您没有显示系统信息需求,您可以无需安装此软件包。

sudo pacman -S neofetch

zbar

此软件包用于处理二维码信息,如您没有处理二维码信息需求,您可以无需安装此软件包。

sudo pacman -S zbar

安装依赖包

pip3 install -r requirements.txt

修改配置文件

将配置 config.gen.yml 文件复制一份并且命名为 config.yml

cp config.gen.yml config.yml

然后去 telegram 官网 生成 api 填入配置文件内,我们只需要复制 api id 和 api_hash 值 填入 api_key 和 api_hash 。

vi config.yml
按 i 进入编辑模式,粘贴好后,按下 esc 输入 shift 加冒号,输入 wq 保存退出

代理配置

GitSource

此步是将安装插件的获取源文件更改为国内可以访问的反代源,但是可能因为 cdn 原因,插件更新不及时。

git_source: "https://gitlab.com/Xtao-Labs/PagerMaid_Plugins/-/raw/master/"

登录账号

python3 -m pagermaid

此步需要填入完整的电话号码(eg:+12569986522)然后 tg 会发给你的其他客户端发送验证码,填入验证码后,回车,如有两步验证密码,则再输入两步验证密码即可。

停止运行:

ctrl + c

请注意保护好您已登录的 pagermaid.session 。此文件可以进行账号所有操作,请不要分享给他人使用。

进程守护

此步骤可以方便 pagermaid 的自动运行,您无需在 pagermaid 意外退出后重新登录主机进行操作。

cat <<'TEXT' > /etc/systemd/system/pagermaid.service
[Unit]
Description=PagerMaid-Pyro telegram utility daemon
After=network.target

[Install]
WantedBy=multi-user.target

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

常用指令

启动程序:systemctl start pagermaid

设置为开机自启:systemctl enable pagermaid

停止程序:systemctl stop pagermaid

插件入门

插件结构

在编写插件之前,首先我们需要了解一下插件的概念。

在 PGP 中,插件是一个单独的 Python 文件 file。 PGP 会在加载时对这些文件做一些特殊的处理使得他们成为一个插件。

创建插件

在 plugins 文件夹下创建一个 .py 文件即可。 例如我们创建一个 example.py 。

pgp
├── data
├── pagermaid
├── languages
├── pyromod
└── plugins
    └── example.py

请注意,插件名称不能存在重复

了解主修饰器

主修饰器(listener)是处理基本消息的主要修饰器。

主修饰器的基本组成

主修饰器的类型

首先你需要确定你所要创建的插件是用于处理传入消息还是传出消息。 当处理传入消息时,你需要传入参数 incoming=True, 当处理传出消息时,你需要传入参数 outgoing=True。

主修饰器的匹配规则

当你需要处理命令时,你需要传入参数 command="命令", 当你需要处理其他消息时,你需要传入参数 pattern="正则表达式"。

当 command 和 pattern 都不为空时,主修饰器将会优先使用 pattern 。

请注意,当 command 和 pattern 都为空时,主修饰器将会使此函数处理所有消息

其余用户的触发权限

为方便管理,我们仅提供了两种触发权限,当传入参数 need_admin=True 时, 仅拥有 plugins_root.command 的 sudo 用户才能触发此插件。 当传入参数 need_admin=False 时,拥有 plugins.command 的 sudo 用户可以触发此插件。

优先级

优先级代表此函数的执行顺序

优先级数字越小越先响应!

默认优先级为 50 ,如果你想要改变优先级,可以传入参数 priority=数字 。

阻断

当有任意函数发出了阻止传递信号时, 该消息将不再会传递给下一优先级,直接结束处理。

默认所有情况都不会阻断消息传递,如果你想修改,可以传入参数 block_process=True 。

在默认情况下,可以使用 message.stop_propagation() 方法动态阻止消息传递。

主修饰器的举例

默认情况下,你只需要填写修饰器中的这些参数:

from pagermaid.listener import listener

@listener(command="命令",
          description="命令描述",
          usage="命令帮助")

定义处理函数

在 PGP 中,我们使用了 依赖注入 来帮助你动态管理需要的变量。

在默认情况下,你只需要获取触发函数的消息变量 message: Message 即可

from pagermaid.enums import Message
from pagermaid.listener import listener

@listener(command="命令",
          description="命令描述",
          usage="命令帮助")
async def example(message: Message):
    # 在这里处理消息
    pass

进行消息操作

在对消息处理时,你可能需要调用 message.edit() 方法来编辑消息。

了解消息属性

Pyrogram 文档

编辑消息

async def example(message: Message):
    await message.edit("新的消息内容")

更多消息操作

Pyrogram 文档

进行客户端操作

发送消息

from pagermaid.enums import Client
from pagermaid.listener import listener

@listener(command="命令",
          description="命令描述",
          usage="命令帮助")
async def example(bot: Client):
    # 向 Telegram 账号发送 你好
    await bot.send_message(777000, "你好")

更多客户端操作

Pyrogram 文档

插件示例

GitHub

使用 ws 开始连接世界

Node-RED 是什么

Node-RED 是一种基于流程的编程工具,由 IBM 的新兴技术服务团队原创开发,现在归属于 JS 基金会。

基于 Node-RED ,你可以添加许多模块模块,与我的世界,智能家居等其他领域实现联动!

开始之前

在使用 Node-RED 之前,你需要先在 PagerMaid-Pyro 中安装 websocket 插件,插件的目的在于与 Node-RED 实现通讯

安装 Node-RED

安装方法

Install

添加 websocket 监听节点

运行 Node-RED 之后,你需要将 网络 - websocket in 拖动到流程 1 的界面中,并且双击它,以此来添加新的 websocket-listener 节点

连接到 ws

假设你添加的节点路径为 /ws/example

那么你需要在 PagerMaid-Pyro 中运行 ,websocket ws://127.0.0.1:1880/ws/example 来让 userbot 连接到 Node-RED

添加 websocket 输出节点

你只需要将 网络 - websocket out 拖动到流程 1 的界面中,并且双击它,选择上一步添加好的 websocket 路径即可

解析输入

PagerMaid-Pyro 将收到的消息实时以 json 格式传递给 Node-RED ,所以你还需要添加一个 json 解析器,将其转换为 JS 对象

调用 userbot 方法

pyrogram 文档

你需要使用 功能 - template 传回 json 格式的文本,action 值为方法名,data 值为方法参数的字典。

开始自动化

在编辑流程完毕后,你需要使用 部署 按钮应用更改。

一些例子

请参考 GitHub 仓库

最后修改:2023 年 09 月 10 日
如果觉得我的文章对你有用,请随意赞赏