前言

微信 Webhook 机器人是基于 Web 协议实现的,用于研究和学习目的。该项目能够使用户通过HTTP服务运行一个微信机器人,支持消息的发送和接收。

特点

• 发送文字、图片、文件
• 接收文字、链接卡片、图片、视频、附件、语音• Webhook 接口
• 易于部署和使用

部署

1.首先在Linux系统安装docker
示例Ubuntu

sudo docker run -d \
--name wxBotWebhook \
-p 3001:3001 \
-e LOGIN_API_TOKEN="techshrimp" \
dannicool/docker-wechatbot-webhook
sudo apt update
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io

如果安装了宝塔,直接在面板上点击安装就行
2.拉取镜像

sudo docker pull dannicool/docker-wechatbot-webhook

3.运行镜像创建我们的容器

sudo docker run -d \
--name wxBotWebhook \
-p 3001:3001 \
-e RECVD_MSG_API=http://你的服务器IP:自定义的端口/receive_msg \
-e LOGIN_API_TOKEN="techshrimp" \
-e DISABLE_AUTO_LOGIN=true \
dannicool/docker-wechatbot-webhook

环境变量解读:
• RECVD_MSG_API:当机器人收到消息时会将将消息推送到此接口上。
• DISABLE_AUTO_LOGIN:服务重启时自动登录微信号。
• LOGIN_API_TOKEN:自定义登录 API token。

登录机器人账号

服务部署成功时,通过访问:

https://你的服务器IP:3001/login?token=techshrimp

此处的token参数即为你设定的LOGIN_API_TOKEN值,访问后可以看到一个二维码,使用微信扫码登录账号。
1

扫码登录后,再次访问该登录页面即可看到账号登录成功了。
2

发送消息

在成功登录微信账号后,如何给某个微信好友发送消息呢?wechatbot-webhook提供了一种以http协议的API接口,通过调用提供的api接口即可操控机器人给好友发送消息。

API接口地址: 

http://你的服务器IP:3001/webhook/msg/v2?token=techshrimp

接口要使用post发送,get不支持
这里我写了一个PHP发送文件,可以发送自定义消息提醒之类的。

<?php
// 检测GET或POST请求并获取$nr的值
$nr = isset($_GET['nr']) ? $_GET['nr'] : (isset($_POST['nr']) ? $_POST['nr'] : '');

// 把$nr里面的<br>转换为文本换行
$nr = str_replace('<br>', "\n", $nr);

$curl = curl_init();

// 准备请求的数据
$payload = json_encode([
    [
        "to" => "填你的群名/用户名",
        "type" => "text",
                "isRoom" => true,//隐藏这一栏就是发送给个人
        "data" => [
            "content" => $nr
        ]
    ],
    [
        "to" => "填你的群名/用户名",
                "isRoom" => true,//多发给群或者用户
                "type" => "text",
        "data" => [
            [
                "content" => $nr
            ],

        ]
    ]
]);

curl_setopt_array($curl, [
    CURLOPT_URL => 'http://你的服务器IP:3001/webhook/msg/v2?token=techshrimp',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $payload, // 使用准备好的数据
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json'
    ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

// 检查请求是否出错
if ($err) {
    echo "cURL Error :" . $err;
} else {
    echo $response;
}
?>

随便一个站点,新建PHP文件放进去
http://域名/你的文件名.php?nr=你想发送的内容

接收消息

网络是大多数都是py,我自己写了一个PHP
http://你的服务器IP:自定义的端口/receive_msg \
这里就是你接受消息转发的接口
新建一个站点
http://你的服务器IP:自定义的端口
然后把源码放上去就行了
这里对PHP有点要求
[待更新]