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

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

LINUX DO - 热门话题 (Eric)
0. 写在前面

还记得这两个文章:

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

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

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

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

最新教程也可前往我的博客查看:
[最新]astrbot-wechatpadpro-搭建微信机器人

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

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


3. Astrbot 添加机器人


点击创建机器人


消息平台选择 WeChatPadPro


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

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

查看控制台日志:

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


4. 其他配置

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

31 posts - 16 participants

Read full topic

Generated by RSStT. The copyright belongs to the original author.

Source

Report Page