1 Star 3 Fork 1

无言的黑白/wechat-bot-padlocal

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Powered by Wechaty Wechaty Contributor Program

如果您是在gitee看到这个repo,README.md中的图片看不了是因为甜蜜的gitee不支持外链图片。可前往github仓库查看。

Please note that

有问题请提交issue,我会及时回复的。

如果有使用上的问题,见wiki


一、关于iPad协议token的问题

  1. :rotating_light:目前web协议的wechaty通常情况下已经无法使用(可自行百度网页版微信登陆尝试,能登上就可以用)
  2. 基于UOS操作系统修改请求头的方式登录网页微信https://wx.qq.com/的手段已经失效(腾讯已经给UOS上架全新的微信桌面端。。。)
  3. 可通过http://pad-local.com/获取pad-local协议。新人可免费使用7天,之后是200元一个月。。。
  4. 可通过成为Wechaty Contributor的方式,获取长达>=1年的免费token,见《如何向wechaty投稿blog获取免费token【保姆级教程】》

教程撰写不易,如果对您有帮助还请动动小手点个赞:bulb:

二、功能包括:

2.1 私聊消息处理:关键词回复,包括

image.png

  • 在线实时数据获取服务由API服务商提供

    • 毒鸡汤

      IMG_20220115_210015.jpg

    • 神回复

      image.png

    • 每日英语

      IMG_20220115_205958.jpg

    • 全网热点

      image.png

    • 城市天气

      IMG_20220115_210107.jpg

    • 客服

      image.png

  • 文本处理功能由本地编写算法处理

    • 英文字符串转大/小写

      image.png

      image.png

    • rgb<=>hex

      image.png

      image.png

2.2 群管理

  • 自动拉人入群
    • 通过私聊的快捷指令
  • 快捷指令踢人 踢@用户名可快速踢出群聊
    image.png
  • 检测群内非法url@提醒对方 image.png

2.3 自动处理好友请求

  • 自动通过好友请求
  • 可限制通过填写指定验证消息的好友
    • 避免陌生人添加好友

2.4 智能对话(接入微信对话开放平台)

  • 未被关键词捕获的消息将由**训练好的 AI **智能回复

2.5 设置定时任务(可循环、可单次)

  • 定时发送群消息

    • 登录时创建任务
    • 暂不支持指令设置任务,只可通过修改源码
  • 定时给个人发送消息

    image.png

    2022年1月14日4点0分0秒向备注为樊庆元的联系人发送“我刚学完,早安”

  • 群发功能(可适用于多种节日)

    greeting.png

    加上备注作为称谓,就不会被看出是群发的啦~:sparkles:诚意MAX:sparkles:

  • 定时消息销毁

    cancel

    定时任务设置成功后会返回任务id,凭此可销毁任务

  • :sparkles:休息提醒

    rest

    在机器人正常运行时,每天上午9点启动,晚上7关闭(自动)。每隔半小时会提醒master休息一下,近视眼福音有木有:tada:

2.6 密码簿

该功能可用于记录常用的冗长文本,例如身份证号、银行卡号、购物时的好评模板等等。

  • 通过指令map key value可记录标签为key,内容为value的密码(在password目录下生成文件)

    image.png

  • 通过指令get key可以获取标签为key的密码

    image.png

  • 文件加密

    • 文件名通过md5算法比对

    • 文件内容通过aes-128-cbc算法加密

      image.png

      image.png

2.7 屏蔽指定联系人

  • 可通过屏蔽/解除屏蔽 联系人备注的方式,在加载于内存中的屏蔽列表中进行增加/删除联系人【机器人重启后失效】

    屏蔽

2.8 监听群成员加入/退出

  • 加入群聊,机器人会在群聊内公布加入者和邀请人的名称 入群

  • 退出群聊,机器人会向机器人master发送消息,说明何人退出了何群 退群

2.9 图床

  • 向机器人发送图片时,将触发图床功能,由机器人接收图片后将其上传至图床服务器 图床 图片可在浏览器进行访问,也可以插入markdown文档

2.10 :sparkles::sparkles::sparkles:翻译

  • 机器人已介入百度翻译平台,自行注册开发者并认证,可以获得每月200万字符量翻译,QPS能达到10。 翻译

三、目录结构

  • config/文件夹存放公共配置
  • imgs/存放相关图片
  • password/ 存放密码簿生成文件
  • listeners/存放机器人初始化后一系列事件处理(分模块)
    • on-friendship.js 处理好友请求
    • on-login.js 处理登录
    • on-message.js 处理用户消息、群消息
    • on-scan.js 处理登录二维码
    • on-room-join/leave 处理用户加入/退出群聊
  • schedule/ 对定时任务node-schedule库进行了封装
  • superagent/ 存放所有的数据请求、接口封装都在此
  • utils/ 公用方法的封装
  • bot.js 机器人实例文件
  • start.js 入口文件

四、clone后请按照如下操作修改

需修改config配置,将里面的配置改为自己的。打开config/目录并新建index.js 文件, 文件内容如下:

/*
 * @author Hilbert Yi
 * @digst:  全局配置config
 * @time: 2022-01-03 12:36
 */
const ignoreFile = require('./ignore.json');
module.exports = {
  SERVER: "", //服务器IP/域名

  PUPPET_TOKEN: "", // pad-local

  TXAPI_TOKEN: "", // 天行数据

  JUHEAPI_TOKEN: "", // 聚合数据

  WXAI_TOKEN: "", // 微信对话开放平台

  BAIDU_APPID: "",

  BAIDU_KEY: "",

  IGNORE: ignoreFile, //json文件:不需机器人回复的用户,填写用户备注,非昵称

  WEBROOM: ["test", "test2"], //要管理的群名称

  MYSELF: "mnb", //大号的备注,防止其他人冒充

  BOTNAME: "gjb", // 机器人的昵称

  PROVINCE: [
    "北京",
    "湖北",
    "广东",
    "浙江",
    "河南",
    "湖南",
    "重庆",
    "安徽",
    "四川",
    "山东",
    "吉林",
    "福建",
    "江西",
    "江苏",
    "上海",
    "广西",
    "海南",
    "陕西",
    "河北",
    "黑龙江",
    "辽宁",
    "云南",
    "天津",
    "山西",
    "甘肃",
    "内蒙古",
    "台湾",
    "澳门",
    "香港",
    "贵州",
    "西藏",
    "青海",
    "新疆",
    "宁夏",
  ],

  KEYWORDS: function () {
    return `回复序号或关键字获取对应服务
1.回复群名进入群聊:${this.WEBROOM}
2.毒鸡汤
3.神回复
4.每日英语
5.全网热点
6.全国肺炎
7.客服
------------------
翻译(例:翻译 [en] [zh] text)
转小写(例:转小写 YZHYYDS)
转大写(例:转大写 yzhyyds)
转rgb(例:转rgb #cccccc)
转16进制(例:转16进制 rgb(255,255,255))
城市名 天气(例:武汉 天气)
省份/自治区 肺炎(例:湖北 肺炎)
------------------\n`;
  },

  VIP: function() {
    return `密码簿\n(例:map test 123456\nget test)\n` + 
           `定时消息\n(例:定时 M.D.H.m.s 目标 信息)\n` +
           `群发消息\n(例:群发 M.D.H.m.s 目标1[,目标2] 信息)\n` +
           `销毁定时\n(例:销毁 id)\n` +
           `刷新联系人数据(!WARNING!)\n` +
           `[解除]屏蔽\n(例:屏蔽 张三(->备注))` +
           `持久化屏蔽\n(更新本地屏蔽联系人列表)`
  }
};

token/key获取操作如下:

接口申请之后请打开config/index.js,将顶部PUPPET_TOKENTXAPI_TOKENJUHEAPI_TOKENWXAI_TOKEN改为自己的即可。

其他免费接口可随意申请,也可以自行更换API服务商。

五、运行

记得安装依赖

npm install
npm start start.js

非常不建议使用cnpm,请自行百度nrm使用方法或者手动修改国内镜像。当然,执意要用的话请务必这么使用: cnpm i --by=npm

如果部署于服务器,可使用PM2进行管理

[root@xx ~]# pm2 start start.js

启动后,终端会出现一个二维码,扫码登录即可。

控制台也许会打印多个二维码,扫一个耐心等待即可。如果确实没登上去再后面出来的。

退出登录后再重新登录时,你的手机会自动弹出iPad的登录请求,点击后耐心等待即可。如果确实没登上去再扫控制台的二维码登录。

若控制台打印的二维码是支离破碎的,无法扫描,请更换终端。

我在本机用的是Windows Terminal,ECS服务器用tabby连接。


六、更新日志

2022-04-02

  • 上线翻译功能:globe_with_meridians:

2022-03-31

  • 优化AI签名的获取,加入轮询机制
  • 域名备案完成:ok_hand:

2022-03-29

  • 支持将内存中修改过后的屏蔽联系人列表持久化到本地json文件

2022-03-08

  • :art:优化控制台日志打印格式,带时间戳
  • 修复了离线消息的处理问题(从离线状态恢复登录时,仅响应1分钟内收到的消息事件)

2022-03-04

  • :sparkles:休息提醒功能上线

2022-03-01

  • :sparkles:定时消息v2.1上线,支持创建/销毁定时任务
  • :tada:密码簿现支持自定义密钥与初始化向量(16位utf8字符。需自行保存,丢失后文件将无法解密。)!

2022-02-24

  • :bulb:现支持在线添加/删除屏蔽联系人列表(加载于内存,机器人重启后失效!如需持久化,请手动修改config.js

2022-02-07

  • :tada::tada::tada:图床功能上线

2022-02-05

  • 联系人刷新(:rotating_light:极度慎用!!!有可能触发微信安全警告)

2022-01-29

  • 添加节日祝福功能

2022-01-28

  • bot实例重构,解决循环依赖的问题
  • 可直接npn i安装依赖,彻底解决依赖版本的困扰

2022-01-25

  • 接入网易疫情数据接口

2022-01-23

  • 接入新浪疫情数据接口

2022-01-20

  • 接入聚合数据API
  • 天气信息

2022-01-18

  • 部署于阿里云ECS服务器环境

2022-01-17

  • 投稿blog,成为Wechaty Contributors

2022-01-15

  • 每日英语

2022-01-12

  • 毒鸡汤

2022-01-11

  • 接入天行数据API
  • 神回复

2022-01-03

  • 更改puppet供应商,由wechaty(web协议)切换为padlocal(iPad协议)

2022-01-02

  • hex转rgb
  • rgb转hex

2022-01-01

  • 英文字符串转大写
  • 英文字符串转小写

2022-12-28

  • 扫码登录

2021-11-23

  • 项目启动
  • 代码热更新部署
MIT License Copyright (c) 2020 Hilbert Yi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于Node.js和Wechaty的个人微信机器人 展开 收起
JavaScript 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sun2ot/wechat-bot-padlocal.git
git@gitee.com:sun2ot/wechat-bot-padlocal.git
sun2ot
wechat-bot-padlocal
wechat-bot-padlocal
main

搜索帮助

Cb406eda 1850385 E526c682 1850385