[最新]AstrBot + WeChatPadPro 搭建微信机器人

0. 写在前面

还记得这两个文章:

  1. AstrBot + Gewechat 搭建微信机器人
  2. 【更新】AstrBot + WeChatPadPro 搭建微信机器人

后续还是有不少帖子在问相关的问题,这里统一回复:

WeChatPadPro 并没有删库跑路,只是 Astrbot 文档不能访问(隐藏)了,实际上从这个链接进入还是能访问的:
https://docs.astrbot.app/en/deploy/platform/wechat/wechatpadpro_legacy.html

服务器和设备最好在同一个省,如果异地则大概率会弹安全验证,实在没发满足服务器和设备在一个地方,可以参考以下解决方案(WeChatPadPro提供):
微信登录安全验证码解决流程.md

最好是家里云、本地,或者同地区的云服务器来部署,安全风险更低~

1. 部署Astrbot

克隆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

2. 部署 WeChatPadPro

克隆 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

如果看到以下日志则启动成功:

1766050786177.png

3. Astrbot 添加机器人

1766050875968.png

点击创建机器人

1766050957619.png

消息平台选择 WeChatPadPro

1766050994838.png

admin_key 填写 TestAdminKey
host 填写你的 服务器IP

填写完成后保存后,启用该机器人即可

查看控制台日志:

如果出现以下扫码信息则成功连接上了

1766051358177.png

4. 其他配置

对接大模型服务请查看往期:Docker 搭建微信机器人

文章分享到:

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注