[最新]AstrBot + WeChatPadPro 搭建微信机器人
LINUX DO - 热门话题 (Eric)0. 写在前面
还记得这两个文章:
后续还是有不少帖子在问相关的问题,这里统一回复:
WeChatPadPro 并没有删库跑路,只是 Astrbot 文档不能访问(隐藏)了,实际上从这个链接进入还是能访问的:
https://docs.astrbot.app/en/deploy/platform/wechat/wechatpadpro_legacy.html
服务器和设备最好在同一个省,如果异地则大概率会弹安全验证,实在没发满足服务器和设备在一个地方,可以参考以下解决方案(WeChatPadPro提供):
微信登录安全验证码解决流程.md
最好是家里云、本地,或者同地区的云服务器来部署,安全风险更低~
最新教程也可前往我的博客查看:
[最新]astrbot-wechatpadpro-搭建微信机器人
克隆AstrBot 仓库到本地:
git clone https://github.com/AstrBotDevs/AstrBot
cd AstrBot
运行 Compose:
docker compose up -d
如果您的网络环境在中国大陆境内,上述命令将无法正常拉取。您可能需要修改 compose.yml 文件,将其中的 image: soulter/astrbot:latest 替换为 image: m.daocloud.io/docker.io/soulter/astrbot:latest 即可
访问 Astrbot 面板:
http://服务器IP:6185 默认用户名和密码都是 astrbot。
克隆 WeChatPadPro 仓库到本地:
git clone https://github.com/WeChatPadPro/WeChatPadPro.git
cd WeChatPadPro/deploy
配置环境变量,编辑.env 文件:
# 基础配置
WECHAT_PORT=8080
PORT=8059 # 这里的端口改成8059,因为Astrbot中默认配置的是这个端口链接WeChatPadPro
TZ=Asia/Shanghai
GH_WXID=
ADMIN_KEY=TestAdminKey # 这里改成你自己的密钥,例如TestAdminKey
# Worker配置
WORKER_POOL_SIZE=500
MAX_WORKER_TASK_LEN=1000
# Web配置
WEB_DOMAIN=localhost:8059 # 这里也记得改为8059
WEB_TASK_NAME=
WEB_TASK_APP_NUMBER=
NEWS_SYN_WXID=true
DT=true
# 消息队列配置
TOPIC=wx_sync_msg_topic
ROCKET_MQ_ENABLED=false
ROCKET_MQ_HOST=127.0.0.1:9876
ROCKET_ACCESS_KEY=
ROCKET_SECRET_KEY=
RABBIT_MQ_ENABLED=false
RABBIT_MQ_URL=
KAFKA_ENABLED=false
KAFKA_URL=
KAFKA_USERNAME=
KAFKA_PASSWORD=
# MySQL配置
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root123456
MYSQL_DATABASE=weixin
MYSQL_USER=weixin
MYSQL_PASSWORD=123456
MYSQL_CONNECT_STR=weixin:123456@tcp(mysql:3306)/weixin?charset=utf8mb4&parseTime=true&loc=Local
# 任务配置
TASK_RETRY_COUNT=3
TASK_RETRY_INTERVAL=5
HEARTBEAT_INTERVAL=25
AUTO_AUTH_INTERVAL=30
AUTO_SYNC_INTERVAL_MINUTES=30
TASK_EXEC_WAIT_TIMES=500
QUEUE_EXPIRE_TIME=86400
# WebSocket配置
WS_HANDSHAKE_TIMEOUT=10
WS_READ_BUFFER_SIZE=4096
WS_WRITE_BUFFER_SIZE=4096
WS_READ_DEADLINE=120
WS_WRITE_DEADLINE=60
WS_PING_INTERVAL=25
WS_CONNECTION_CHECK_INTERVAL=45
WS_MAX_MESSAGE_SIZE=8192
# 集群
CLUSTER_NAME=
ZK_ADDR=
ETCD_ADDR=
# 禁用命令
DISABLED_CMD_LIST=
除了以上三处需要更改外,其他的可选由自己决定
修改 docker-compose.yml 文件:
version: '3.8'
services:
wechatpadpro:
image: wechatpadpro/wechatpadpro:${WECHAT_TAG:-latest}
container_name: wechatpadpro
restart: always
ports:
- "${WECHAT_PORT:-8080}:8080"
- "${PORT:-8059}:8059" # 这里的端口同样改成8059
env_file:
- .env
environment:
- DB_HOST=mysql
- REDIS_HOST=redis
- TZ=${TZ}
- GH_WXID=${GH_WXID}
- ADMIN_KEY=${ADMIN_KEY}
- WORKER_POOL_SIZE=${WORKER_POOL_SIZE}
- MAX_WORKER_TASK_LEN=${MAX_WORKER_TASK_LEN}
- WEB_DOMAIN=${WEB_DOMAIN}
- WEB_TASK_NAME=${WEB_TASK_NAME}
- WEB_TASK_APP_NUMBER=${WEB_TASK_APP_NUMBER}
- NEWS_SYN_WXID=${NEWS_SYN_WXID}
- DT=${DT}
- TOPIC=${TOPIC}
- ROCKET_MQ_ENABLED=${ROCKET_MQ_ENABLED}
- ROCKET_MQ_HOST=${ROCKET_MQ_HOST}
- ROCKET_ACCESS_KEY=${ROCKET_ACCESS_KEY}
- ROCKET_SECRET_KEY=${ROCKET_SECRET_KEY}
- RABBIT_MQ_ENABLED=${RABBIT_MQ_ENABLED}
- RABBIT_MQ_URL=${RABBIT_MQ_URL}
- KAFKA_ENABLED=${KAFKA_ENABLED}
- KAFKA_URL=${KAFKA_URL}
- KAFKA_USERNAME=${KAFKA_USERNAME}
- KAFKA_PASSWORD=${KAFKA_PASSWORD}
- TASK_RETRY_COUNT=${TASK_RETRY_COUNT}
- TASK_RETRY_INTERVAL=${TASK_RETRY_INTERVAL}
- HEARTBEAT_INTERVAL=${HEARTBEAT_INTERVAL}
- AUTO_AUTH_INTERVAL=${AUTO_AUTH_INTERVAL}
- AUTO_SYNC_INTERVAL_MINUTES=${AUTO_SYNC_INTERVAL_MINUTES}
- TASK_EXEC_WAIT_TIMES=${TASK_EXEC_WAIT_TIMES}
- QUEUE_EXPIRE_TIME=${QUEUE_EXPIRE_TIME}
- WS_HANDSHAKE_TIMEOUT=${WS_HANDSHAKE_TIMEOUT}
- WS_READ_BUFFER_SIZE=${WS_READ_BUFFER_SIZE}
- WS_WRITE_BUFFER_SIZE=${WS_WRITE_BUFFER_SIZE}
- WS_READ_DEADLINE=${WS_READ_DEADLINE}
- WS_WRITE_DEADLINE=${WS_WRITE_DEADLINE}
- WS_PING_INTERVAL=${WS_PING_INTERVAL}
- WS_CONNECTION_CHECK_INTERVAL=${WS_CONNECTION_CHECK_INTERVAL}
- WS_MAX_MESSAGE_SIZE=${WS_MAX_MESSAGE_SIZE}
- CLUSTER_NAME=${CLUSTER_NAME}
- ZK_ADDR=${ZK_ADDR}
- ETCD_ADDR=${ETCD_ADDR}
- DISABLED_CMD_LIST=${DISABLED_CMD_LIST}
- MYSQL_CONNECT_STR=${MYSQL_CONNECT_STR}
volumes:
- ./.env:/app/.env
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
networks:
- wechatpadpro-network
mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123456}
MYSQL_DATABASE: ${MYSQL_DATABASE:-weixin}
MYSQL_USER: ${MYSQL_USER:-weixin}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-weixin123}
ports:
- "${MYSQL_PORT:-3306}:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-root123456}"]
interval: 5s
timeout: 5s
retries: 20
networks:
- wechatpadpro-network
redis:
image: redis:6
container_name: redis
restart: always
command: redis-server --appendonly yes
ports:
- "${REDIS_PORT:-6379}:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 20
networks:
- wechatpadpro-network
networks:
wechatpadpro-network:
driver: bridge
volumes:
mysql_data:
redis_data:
将端口改成 8059后保存并退出;然后启动容器:
docker-compose up -d
查看启动日志:
docker logs wechatpadpro
如果看到以下日志则启动成功:

3. Astrbot 添加机器人

点击创建机器人

消息平台选择
WeChatPadPro

admin_key 填写
TestAdminKey
host 填写你的服务器IP
填写完成后保存后,启用该机器人即可
查看控制台日志:
如果出现以下扫码信息则成功连接上了

4. 其他配置
对接大模型服务请查看往期:Docker 搭建微信机器人
31 posts - 16 participants
Generated by RSStT. The copyright belongs to the original author.