利用微信hook开源项目开发一个摸鱼提示小助手
后台-插件-广告管理-内容页头部广告(手机) |
前言
前段时间发了一个微信接入ChatGPT机器人火了,自己就找了下类似的项目,最近看到在GitHub上面还是有很多人开发类似微信机器人项目,其中发现了一个项目挺不错的,是一个可以利用http 请求驱动的微信机器人 的项目
原理就是使用web PC协议登录微信,然后接收任何微信消息之后 把消息发送到自定义的 网址,根据相关的逻辑进行回复或者处理。
部署
现在就开始本地部署测试一下,依旧是使用docker部署,先亮出项目地址:
项目介绍只有一句话,我就是喜欢这句话:磨平了自己开发的障碍,开源的微信机器人项目大多都是Golang,Python,node语言开发的,修改别人的开发完毕之后的成熟项目很复杂,又很难嵌入到自己的项目中,这个就非常好,可以用自己熟悉的编程语言开发微信机器人。
部署方式非常简单,第一步找到项目根目录下的docker-compose.yaml文件,修改三个地方
version: '3.8'
services:
wxBotWebhook:
image: dannicool/docker-wechatbot-webhook
container_name: wxbot_app
volumes:
- ./wxBot_logs:/app/log
ports:
- "3001:3001"
environment:
- LOG_LEVEL=info # 调整容器输出级别(不影响日志文件输出等级)运行时提示的消息等级(默认info,debug级别会输出详细的日志)
# - DISABLE_AUTO_LOGIN=true # 如果不希望登录一次后就记住当前账号,想每次都扫码登陆,填 true
- ACCEPT_RECVD_MSG_MYSELF=true # 如果希望机器人可以自己接收消息,填 true
- RECVD_MSG_API=https://***.***.com/****/**** # 如果想自己处理收到消息的逻辑,在下面填上你的API地址, 默认为空
- LOGIN_API_TOKEN= ******* # 登录地址Token访问地址:http://localhost:3001/login?token=[LOCAL_LOGIN_API_TOKEN]
restart: unless-stopped
ACCEPT_RECVD_MSG_MYSELF 打开机器人接收消息的开关
RECVD_MSG_API 自己接收该项目转发出来的微信消息,HTTP 协议API的地址(非常重要)
LOGIN_API_TOKEN 对接API 的token (为了进行安全的交互)
修改完成过后,使用docker-compose up -d 启动项目,接着就可以访问API 直接登录了,根据GitHub项目的介绍
如果自己部署该项目的地址是公网可以访问的 ,访问地址是:www.myspace.com, LOGIN_API_TOKEN填写的密码是123456,那么获取登录二维码的地址就是:www.myspace.com/login?token… ,浏览器直接访问就可以获得一个二维码,用微信扫码就可以直接登录。
我这里已经登录了微信了,再次访问就会出现下面的提示
简单开发
项目介绍有一个接口就是检测微信是否掉线,我觉得这个功能非常重要,写了一个接口,十分钟检测调用一次这个接口,如果检测掉线就使用企业微信通知我,同时发送登录链接,我就可以第一时间直接扫码重新登录了,核心代码我使用了PHP,下面贴上代码给大家参考一下:
#[Crontab(rule: "*\/10 * * * *", memo: "checkHealthy")]
public function checkHealthy(): void
{
$this->logger->debug('微信掉线检测' . date('Y-m-d H:i:s', time()));
$res = RequestClientTool::instance()->get($this->checkUrl . $this->token)->plain();
if ($res['status']) {
if ($res['data'] !== 'healthy') {
$this->sendWarning();
}
}
}
/**
* 发送警告
* @return void
*/
private function sendWarning(): void
{
$data = [
"msgtype" => "text",
"text" => [
"content" => "微信已掉线请重新扫码" . date('Y-m-d H:i:s', time()) . ",点击扫码重新登录:" . $this->loginUrl . $this->token,
]
];
$res = RequestClientTool::instance()->post($this->botUrl)->setJson($data)->plain();
}
有部分代码的封装,逻辑仅供参考,接下来我又做了一个小工具,每天早上发送定时任务 消息,提示摸鱼
具体PHP代码如下,摸鱼接口也同时分享出来给有兴趣的同学们玩玩
/**
* @param string $day
* @return string
*/
public function moyuData(string $day = '10'): string
{
$url = 'https://moyu.awsl.icu/api/moyu_json?day=10';
$res = RequestClientTool::instance()->get($url)->plain();
return $res['data'];
}
#[Crontab(rule: "0 10 * * *", memo: "moyu")]
public function moyu(): void
{
$moyuData = $this->moyuData();
$moyuData = str_replace('"', '', $moyuData);
$moyuData = str_replace('\n', PHP_EOL, $moyuData);
$data = [
'to' => 'beyonds',
'isRoom' => true,
'data' => [
'type' => 'text',
'content' => $moyuData
]
];
$res = RequestClientTool::instance()->post($this->wxUrl . '/webhook/msg/v2?token=' . $this->token)->setJson($data)->plain();
var_dump($res['message']??'');
$this->logger->info('摸鱼消息已发送' . date('Y-m-d H:i:s', time()).' '.$res['message']??'');
}
浏览器访问这个 API地址也可以直接得到这个摸鱼提醒的文案:
最后
这个项目只简单做到这里,不知道大家有什么更好的想法
如果觉得内容不错,欢迎点个赞~
你的支持是我更新的动力。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |