微信竟然还能这么玩?AI自动回复+群聊秒响应,朋友以为我开了挂!

:paperclip: Reference Article

:memo: Thrust

博客教程
微信竟然还能这么玩?AI自动回复+群聊秒响应,朋友以为我开了挂! | Obito’s Blog

效果图

流程

好友发送信息→微信机器人监听→发送回调地址→n8n监听→ai大模型处理→n8n发送http请求→微信机器人发回好友

注意

不添加memory,ai是没有上下文记忆的,需要自行添加数据库如redis或postgresql,我也会在下面演示。

微信

1.安装微信

微信版本需要是3.9.x,微信版本4.0不支持。

微信3.9.11.17地址:

2.登陆微信

必须先登录微信号后运行RuoYuBot

3.取消自动更新微信

N8N

1.Install N8N

官网默认是必须使用ssl加密,可以使用参数N8N_SECURE_COOKIE=false

docker volume create n8n_data
docker network create n8n_network
#取消强制加密,使用http访问
docker run -d -e N8N_SECURE_COOKIE=false --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n
docker run -d \
  -e N8N_SECURE_COOKIE=false \
  -e N8N_HOST="私网或公网ip或域名,为了让内部工作流互相调用" \
  --name n8n \
  --hostname n8n \
  --network n8n_network \
  --restart=always \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n

2.Access the editor

http://localhost:5678

RuoYuBot

1.下载RuoYuBot

运行后会在当前目录生成一个config.ini文件

[DEFAULT]
listen_list = 好友名称或备注,群名称
webhook_urls = [http://ip](http://ip/):port
port = 5000
retry_count = 3
retry_delay = 5
log_level = INFO
api_token =

n8n

方式一:上传配置文件

工作流导入后,需要自己对一些凭证参数进行调整

AI_Wechat.json

方式二:手动创建n8n的ai工作流

1.创建webhook监听

2.复制test url

3.创建AI Agent

4.点击AI Agent,这里定义ai收到的信息字段

选择Define below,选择Expression,输入prompt{{ $json.body.message }}

5.点击Chat Model,选择你想接入的大模型提供商

6.创建凭证,需要获取对应的api

7.选择使用的ai模型

8.创建Code,目的转换ai回复信息的特殊字符

// 输入项中的文本数据
const textData = $input.first().json.output;

// 清理文本以适应JSON格式的函数
function cleanTextForJson(text) {
    // 使用JSON.stringify来转义所有必要的字符,并去除两端的引号
    let cleanedText = JSON.stringify(text).slice(1, -1);
    
    // 替换不可见字符(如换行符、制表符等)
    cleanedText = cleanedText.replace(/\n/g, '\\n').replace(/\t/g, '\\t');
    
    return cleanedText;
}

// 示例输入数据
const exampleInput = $input.first().json.output

// 使用函数清理文本
const cleanedText = cleanTextForJson(exampleInput);

// 将清理后的文本放入输出对象
return { cleanedText };

9.创建HTTP Request

10.修改配置

修改请求方式和url

Method: post
URL: http://ruoyubot-ip:7777/webhook

#认证方式
Authentication:Generic Credential Type
Generic Auth Type:Header Auth
Header Auth:Create new credential
#下面Authorization的value格式为Bearer+空格+api token,api token在RuoYuBot上面自定义

创建凭证

修改body

json参数可以自己从左边拖拉到json表达式

**Send Body**:
{
  "target_user": "{{ $('Webhook').item.json.body.target_user }}",
  "message": "{{ $json.body.message }}",
  "is_group": "{{ $json.body.is_group }}"
}

#发送消息格式说明
#{
#    "target_user": "群聊名称/好友名称",
#    "message": "要发送的消息",
#    "is_group": true/false,
#    "at_list": ["要@的成员列表"]
#}

11.更新RuoYubot的配置文件

#回调测试地址: http://n8n-ip:5678/webhook-test/xxxxx

回调地址: http://n8n-ip:5678/webhook/xxxxx

API Token: 自定义

本地端口: 自定义

监听对象: 好友名或群名

12.测试工作流

点击测试

13.启用工作流

14.更新回调地址

把webhook-test变成webhook

Redis

1.创建配置文件

#新建文件夹
mkdir -p /data/dockerData/redis/conf
cd /data/dockerData/redis/conf
 
#创建文件
touch redis.config
 
#编写文件内容  (进入后 i 子母键插入,黏贴下面配置,:wq! 保存并退出)
vim redis.config 
# Redis服务器配置 
 
# 绑定IP地址
#解除本地限制 注释bind 127.0.0.1  
#bind 127.0.0.1  
 
# 服务器端口号  
port 6379 
 
#配置密码,不要可以删掉
requirepass password
  
 
#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no
 
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid  
 
#默认为no,redis持久化,可以改为yes
appendonly yes
 
 
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300
 
#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000
 
# 按需求调整 Redis 线程数
tcp-backlog 511
 
# 设置数据库数量,这里设置为16个数据库  
databases 16
 
# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
 
 
# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128
 
 
# 是否记录系统日志,默认为yes  
syslog-enabled yes  
 
#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice
  
# 日志输出文件,默认为stdout,也可以指定文件路径  
logfile stdout
 
# 日志文件
#logfile /var/log/redis/redis-server.log
 
 
# 系统内存调优参数   
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

2.运行容器,使用上面配置文件启动

docker run -p 6379:6379 --hostname redis --network n8n_network --restart=always --name redis6.2.6 -v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.conf -v /data/dockerData/redis/data:/data -v /data/dockerData/redis/logs:/logs -d redis:6.2.6 redis-server /etc/redis/redis.conf

上面命令参数解释

–privileged=true :容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

- p:端口映射,此处映射 主机6379端口 到 容器的6379端口
- v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

新建配置文件书卷:  -v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.config

redis数据保存数据卷  -v /data/dockerData/redis/data:/data

reids日志文数据卷  -v /data/dockerData/redis/logs:/logs

- d : 表示使得容器后台一直运行
redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程
–appendonly yes:开启数据持久化
–requirepass password :设置你的密码,设置密码比较安全

3.测试

#进入redis容器
docker exec -it a34aff536643 bash

#连接redis
redis-cli
 
#输入密码
127.0.0.1:6379> auth password
OK

4.开放防火墙

#开放防火墙指定端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
#重新加载防火墙
firewall-cmd --reload

5.添加redis作为memory

创建凭证,我们设置了同一个docker网络并映射了主机名,所以这里写redis就行了,密码在配置文件

自定义上下文长度可以设置

{{ $json.body.is_group ? $json.body.sender : $json.body.chat_name }}

6.测试

Postgresql我就不测试了,一样的流程

66 个赞

有封号风险不

封号预警
zsbd

4 个赞

有点东西哦

基于微软的UIAutomation,只要不涉及违规文本,都不会,不过前期刚挂会强制退出几次,重新登录就行了,我用了大半年很正常

微信应该有基于用户行为的分析,感觉封号概率很高很高

2 个赞

如果频繁敏感操作可能会封吧

都有风险的,我也不能保证百分百,只能说比起其他概率小,我自己尝试过的,任何都有风险,自行斟酌

感谢分享,用小号玩

别一分钟发几百次消息,肯定会封的,以及一些敏感信息,这些就算你是人工都会封

2 个赞

看着好玩,封号警告,记得用小号

1 个赞

感谢分享,看着挺好玩

会不会封号呀~ :grimacing:

看起来有点强啊

手机能越狱的话装个pkc插件,更方便。

我有个想法,这个配合上语言分析生成一个自己的AI,然后就可以打游戏了(AI帮我聊天? :tieba_087:

谢谢分享,互赞

1 个赞

都有风险的,我也不能保证百分百,只能说比起其他概率小,我自己尝试过的,用了大半年没封号,任何都有风险,自行斟酌

有那么一瞬间 我以为是在掘金

感谢大佬教程!

1 个赞