> 说明👇
- 因为镜像为@wcxmsl自行构建的,若是对代码什么的存在异议的,可以提出来,若有不妥之处也可说明。
- 因为核心代码仍为PagerMaid,本人只是搬运,出现核心代码所产生的bug,本人无能力解决,请悉知。
- 因为代码可能存在不规范所导致的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
至此拉取结束,接下来配置文件
注意:因为镜像有点大,所以拉取可能需要些时间,特别是国内机。若实在太慢可考虑配置镜像加速
配置镜像加速教程:点击前往(建议优先网易或者七牛源)
执行效果图👇
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
第二步:配置相关参数并登录账号
- .查看docker日志
执行代码👇
docker logs telegram
执行效果图👇
- 执行日志内所显示的代码
执行代码👇
容器外: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(国内电话)。
执行效果图👇
- 填入api_key及api_hash后
根据需要进行填写,一路回车也行,嘿嘿。
执行效果图👇
- 配置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
按如上修改代理,修改完后保存
执行效果图👇
代理配置完毕后重启下容器
执行代码👇
docker restart telegram
执行效果图👇
- 继续执行代码
国外机接着配置就行
国内机需要重新执行第2的代码(容器内xxx,容器外xxx)
填入相应手机号,届时tg会受到一条验证,输入验证码
最后ctrl+c结束
注意:手机号前需+86(国内电话),最后需要ctrl+c结束,不然无法保存配置文件。若忘记了可重启容器后再执行一次第2的命令。(容器内xxx,容器外xxx)
执行效果图👇
第三步:重启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 "$@"
评论区