侧边栏壁纸
  • 累计撰写 11 篇文章
  • 累计创建 9 个标签
  • 累计收到 17 条评论

目 录CONTENT

文章目录

服务器PagerMaid-Modify人形自走bot的docker版本的使用及配置

薄荷
2022-05-28 / 0 评论 / 0 点赞 / 2,698 阅读 / 2,267 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

> 说明👇

  1. 因为镜像为@wcxmsl自行构建的,若是对代码什么的存在异议的,可以提出来,若有不妥之处也可说明。
  2. 因为核心代码仍为PagerMaid,本人只是搬运,出现核心代码所产生的bug,本人无能力解决,请悉知。
  3. 因为代码可能存在不规范所导致的bug,无法接受请不要使用,可以提出,我可以修改。

⚠注意:此镜像及代码仅作为学习使用,不做于其他用途

😶防止不必要的麻烦,文章末尾将会贴出构建时的dockerfile及相关运行代码,请悉知。

一. tg自走bot

第一步:拉取docker镜像并运行镜像

执行代码👇

docker run -dit \
-v /home/telegram/config:/pagermaid/workdir/config `# 冒号左边为本地目录,配置文件夹` \ 
-v /home/telegram/plugins:/pagermaid/workdir/plugins `# 冒号左边为本地目录,插件文件夹` \
-e RUN_AS_ROOT=true \
-e PUID=917 `# 当 RUN_AS_ROOT=false时才生效,即以普通用户权限运行pagermaid,可以修改为你定义用户的UID` \
-e PGID=917 `# 当 RUN_AS_ROOT=false时才生效,即以普通用户权限运行pagermaid,可以修改为你定义用户的GID` \
--privileged=true \
--restart always \
--name telegram \
--hostname telegram \
k1483162508/telegram:latest

至此拉取结束,接下来配置文件

注意:因为镜像有点大,所以拉取可能需要些时间,特别是国内机。若实在太慢可考虑配置镜像加速
配置镜像加速教程:点击前往(建议优先网易或者七牛源)

执行效果图👇

image

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

image-1653753655643

第二步:配置相关参数并登录账号

  1. .查看docker日志
    执行代码👇
docker logs telegram

执行效果图👇

image-1653753780408

  1. 执行日志内所显示的代码
    执行代码👇
容器外:docker exec -it telegram bash /pagermaid/workdir/utils/docker-run.sh
容器内:bash /pagermaid/workdir/utils/docker-run.sh

提示获取api_key、api_hash 地址:点击前往 教程:点击前往
获取api_key、api_hash后填入

注意:需要科学,电话号码前需要+86(国内电话)。

执行效果图👇

image-1653753939135

  1. 填入api_key及api_hash后

根据需要进行填写,一路回车也行,嘿嘿。

执行效果图👇

image-1653754000231

  1. 配置sock5代理(国内机需要,国外机可跳过)

若为国内机,未配置代理不出意外的话会报错

执行代码👇

#命令行👇
vim /home/telegram/config/config.yml
#输入i编辑,找到下面这一段
# socks5 or http or MTProto
proxy_addr: "代理地址"
proxy_port: "代理端口"
http_addr: ""
http_port: ""
mtp_addr: ""
mtp_port: ""
mtp_secret: ""
自行填写完毕后按 esc 
输入 :wq

宝塔及其他面板编辑👇
找到此路径下的文件/home/telegram/config/config.yml
按如上修改代理,修改完后保存

执行效果图👇

image-1653754105267

代理配置完毕后重启下容器

执行代码👇

docker restart telegram

执行效果图👇

image-1653754136577

  1. 继续执行代码

国外机接着配置就行
国内机需要重新执行第2的代码(容器内xxx,容器外xxx)
填入相应手机号,届时tg会受到一条验证,输入验证码
最后ctrl+c结束

注意:手机号前需+86(国内电话),最后需要ctrl+c结束,不然无法保存配置文件。若忘记了可重启容器后再执行一次第2的命令。(容器内xxx,容器外xxx)

执行效果图👇

image-1653754221702

image-1653754226005

第三步:重启docker容器以启动pm2守护进程

执行代码

docker restart telegram
docker logs telegram

若出现pm2的日志即为成功
至此教程结束
注意:自己保留好配置文件及插件文件夹,后续重装可以直接使用,不必重新安装插件及登录(除非配置文件出错,出错只需要删除登录信息文件即可)

二.dockerfile及相关运行代码

dockerfile

FROM ubuntu:latest
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
    LANG=zh_CN.UTF-8 \
    LC_ALL=C \
    SHELL=/bin/bash \
    PS1="\u@\h:\w \$ " \
    DEBIAN_FRONTEND=noninteractive \
    RUN_AS_ROOT=true
SHELL ["/bin/bash", "-c"]
RUN source ~/.bashrc \
&& apt-get update \
&& apt-get install -y tzdata \
    git \
    python3 \
    python3-pip \
    imagemagick \
    libzbar-dev \
    fortune-mod \
    neofetch \
    tesseract-ocr \
    gdebi \
    ffmpeg \
    file \
    net-tools \
    iputils-ping \
    iproute2 \
    apt-utils \
    openssl \
    nodejs \
    npm \
    bzip2 \
    sqlite \
    figlet \
    redis \
    curl \
    wget \
    sudo \
    vim \
    libxml2-dev \
    libxslt1-dev \
    zlib1g-dev \
    libevent-dev \
    libffi-dev \
    gcc \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& npm config set strict-ssl false \
&& npm install -g pm2 \
&& pip3 install socksio python-binance xmltodict \
&& rm -rf /root/.npm \
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/*
CMD ["/bin/bash"]
FROM k1483162508/base:tgbase
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
    LANG=zh_CN.UTF-8 \
    LC_ALL=C \
    SHELL=/bin/bash \
    PS1="\u@\h:\w \$ " \
    DEBIAN_FRONTEND=noninteractive \
    RUN_AS_ROOT=true
SHELL ["/bin/bash", "-c"]
COPY /PagerMaid-Modify/diy/ /root/diy/
RUN source ~/.bashrc \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& sed -e 's;^# \(%wheel.*NOPASSWD.*\);\1;g' -i /etc/sudoers \
&& mkdir -p /pagermaid/workdir \
&& git clone -b master https://gitlab.com/Xtao-Labs/pagermaid-modify.git /pagermaid/workdir \
&& git config --global pull.ff only \
&& mv -f /root/diy/docker-run.sh /pagermaid/workdir/utils/docker-run.sh \
&& mv -f /root/diy/run.sh /pagermaid/workdir/utils/run.sh \
&& cd /pagermaid/workdir \
&& pip3 install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt
WORKDIR /pagermaid/workdir
CMD ["sh","utils/run.sh"]

diy文件夹内文件

#!/bin/bash

welcome() {
  echo ""
  echo "欢迎进入 PagerMaid-Modify Docker 。"
  echo "配置即将开始"
  echo ""
  sleep 2
}

configure() {
  cd /pagermaid/workdir
  config_file=/pagermaid/workdir/config/config.yml
  if [ -e "$config_file" ];then
    cp -rf $config_file /pagermaid/workdir/config.yml
    echo "配置文件存在,跳过此引导,进行下一步"
    return
  else
    echo "配置文件不存在,生成配置文件中 . . ."
    cp config.gen.yml $config_file
    echo "api_key、api_hash 申请地址: https://my.telegram.org/"
    printf "请输入应用程序 api_key:"
    read -r api_key <&1
    sed -i "s/ID_HERE/$api_key/" $config_file
    printf "请输入应用程序 api_hash:"
    read -r api_hash <&1
    sed -i "s/HASH_HERE/$api_hash/" $config_file
    printf "请输入应用程序语言(默认:zh-cn):"
    read -r application_language <&1
    if [ -z "$application_language" ]
    then
      echo "语言设置为 简体中文"
    else
      sed -i "s/zh-cn/$application_language/" $config_file
    fi
    printf "请输入应用程序地区(默认:China):"
    read -r application_region <&1
    if [ -z "$application_region" ]
    then
      echo "地区设置为 中国"
    else
      sed -i "s/China/$application_region/" $config_file
    fi
    printf "请输入 Google TTS 语言(默认:zh-CN):"
    read -r application_tts <&1
    if [ -z "$application_tts" ]
    then
      echo "tts发音语言设置为 简体中文"
    else
      sed -i "s/zh-CN/$application_tts/" $config_file
    fi
    printf "启用日志记录? [Y/n]"
    read -r logging_confirmation <&1
    case $logging_confirmation in
      [yY][eE][sS]|[yY])
        printf "请输入您的日志记录群组/频道的 ChatID (如果要发送给 原 PagerMaid 作者 ,请按Enter):"
        read -r log_chatid <&1
        if [ -z "$log_chatid" ]
        then
          echo "LOG 将发送到 原 PagerMaid 作者."
        else
          sed -i "s/503691334/$log_chatid/" $config_file
        fi
        sed -i "s/log: False/log: True/" $config_file
        cp -rf $config_file /pagermaid/workdir/config.yml
        ;;
      [nN][oO]|[nN])
        echo "安装过程继续 . . ."
        cp -rf $config_file /pagermaid/workdir/config.yml
        ;;
      *)
        echo "输入错误 . . ."
        exit 1
        ;;
    esac
  fi
}

login() {
  echo ""
  echo "下面进行程序运行。"
  echo "注意:请在账户授权完毕后,按 Ctrl + C 退出配置界面并重启容器pagermaid。"
  echo "重启命令为docker restart 容器名称"
  echo ""
  sleep 2
  if [ -e "/pagermaid/workdir/config/pagermaid.session" ];then
    echo "tg个人信息文件存在,跳过此配置,结束"
    exit
  else
    python3 -m pagermaid
    if [ $? = 0 ]; then
      cp -rf /pagermaid/workdir/pagermaid.session /pagermaid/workdir/config/pagermaid.session
      exit
    else
      exit
    fi
  fi
}

start_installation() {
  welcome
  configure
  login
}

start_installation
#!/bin/bash

too() {
  echo "载入配置"
  sleep 2
  cp -rf /pagermaid/workdir/config/config.yml /pagermaid/workdir/config.yml
  sleep 2
  cp -rf /pagermaid/workdir/config/pagermaid.session /pagermaid/workdir/pagermaid.session
  sleep 2
  echo "载入完成"
}

if [ -f "/pagermaid/workdir/config/config.yml" -a -f "/pagermaid/workdir/config/pagermaid.session" ];then
  too
  pm2 start redis-server
  pm2 start 'python3 -m pagermaid'
  pm2 log
else 
  echo "未检测到配置文件,请使用命令:"
  echo "容器外:docker exec -it 容器名称 bash /pagermaid/workdir/utils/docker-run.sh"
  echo "容器内:bash /pagermaid/workdir/utils/docker-run.sh"
fi

tail -f /dev/null

exec "$@"
0
广告 广告

评论区