node打造微信个人号机器人的方法示例

现在,日常生活已经离不开微信,本文将会抛砖引玉演示如何使用 wechaty 操作微信个人号做一些有意思的东西,可以实现自动通过好友请求、关键词回复、自动拉群等功能。大大提高了社群运营的效率。

wechaty( https://chatie.io/wechaty/)是一款开源的微信个人号SDK,进行了一系列的封装,提供简单好用的接口,然后开发者可以在其之上进行微信机器人的开发。你可以用它来做很多事:

1)管理和维护好友; 2)快速有序地处理聊天信息 3)微信群管理 4)实现自动回复 5)……

一、快速上手

wechaty 项目主页写着 6行代码创建一个微信机器人,那么我们就来试一试。 注意:Node.js version >= 8.5

The World's Shortest ChatBot Code: 6 lines of JavaScript

const { Wechaty } = require('wechaty')

Wechaty.instance() // Singleton
.on('scan', (url, code) => console.log(`Scan QR Code to login: $[code]\n${url}`))
.on('login', user => console.log(`User ${user} logined`))
.on('message', message => console.log(`Message: ${message}`))
.start()

这6行代码实现了登录微信个人号并打印出所收到的消息。

wechaty 可以通过Docker和NPM两种方式运行,本文使用npm方式

node bot.js 启动这个个人号机器人,这时命令行会打印出一个链接,我们将它在浏览器中打开可以看到这是个二维码,扫码即可登录(注:2017年年底随着微信逐步关停微信网页版登录支持,之后后注册的微信号不支持网页微信的登录。老夫花了105RMB买了个号来用,心疼我的钱包3秒钟)

User Contact<刘星> logined // 扫码登录
Message: Message<JavaScript之禅> // 接收微信消息

机器人体验在文末。 示例代码地址: Github

二、自动通过好友请求

通过前面的示例代码,可以发现这个库的简洁强大了吧。接着我们来实现第一个小功能:自动通过好友请求

//···
.on('friend', async (contact, request) => {
if (request) {
if (/JavaScript|JS/i.test(request.hello)) {
logMsg = 'accepted because verify messsage is "JS之禅"'
request.accept()
} else {
logMsg = 'not auto accepted, because verify message is: ' + request.hello
}
} else {
logMsg = 'friend ship confirmed with ' + contact.get('name')
}
})
//···

这里我们通过监听 friend 事件。可以获取到谁发了什么好友请求。这里我们验证了添加好友时的请求,在收到好友请求内容为【 JS 】或者【JavaScript】时 就会自动通过好友请求了。

每次都复制链接到浏览器打开二维码在扫码一点儿都不方酷也不方便在服务器上使用。这时我们可以用 qrcode-terminal这个包 直接在命令行中打印出二维码。

//···
const QrcodeTerminal = require('qrcode-terminal')
//···
.on('scan', (url, code) => {
let loginUrl = url.replace('qrcode', 'l')
QrcodeTerminal.generate(loginUrl)
console.log(url)
})
//···

再运行 node bot.js 命令行将直接打印出二维码,方便了很多。

三、自动回复

现在来实现第二个小功能:关键词自动回复。

//···
.on('message', async (message) => {
const contact = message.from()
const content = message.content()
const room = message.room()
if (room) {
console.log(`Room: ${room.topic()} Contact: ${contact.name()} Content: ${content}`)
} else {
console.log(`Contact: ${contact.name()} Content: ${content}`)
}

// 不处理自己发的消息
if (message.self()) {
return
}

if (/JavaScript|Js|js/.test(content)) {
message.say('关注公众号 JavaScript之禅')
}
})
//···

在上面 我们监听 message 来做消息处理。message 可以接收到所有的消息,我们可以判断是不是群聊消息、根据消息回复相应内容。如发送【 js 】将会收到设置好的消息,实现自动回复。

四、自动拉群

前面说到了消息关键词自动回复,把消息处理和群管理结合起来,我们就可以实现根据关键字自动拉群了

//···
.on('message', async (message) => {
const contact = message.from()
const content = message.content()
const room = message.room()
if (room) {
console.log(`Room: ${room.topic()} Contact: ${contact.name()} Content: ${content}`)
} else {
console.log(`Contact: ${contact.name()} Content: ${content}`)
}

if (message.self()) {
return
}

if (/JavaScript|Js|js/.test(content)) {
message.say('关注公众号 JavaScript之禅没?')
}
// 自动拉群
if (/加群/.test(content)) {
let keyroom = await Room.find({ topic: 'test' })
if (keyroom) {
await keyroom.add(contact)
await keyroom.say('欢迎新朋友!', contact)
}
}
})
//···

上面的代码通过 Room 来操作群聊。 此时回复 【加群】即可被自动拉入群中。当然了,我们还可以做得更多如使用 Room.del 来讲某个群员踢出去。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • nodejs微信扫码支付功能实现
  • nodejs调取微信收货地址的方法
  • 基于nodejs实现微信支付功能
  • nodeJS微信分享
  • 基于node.js实现微信支付退款功能
  • Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
  • node.js实现微信JS-API封装接口的示例代码
  • 详解基于Node.js的微信JS-SDK后端接口实现代码
(0)

相关推荐

  • nodejs微信扫码支付功能实现

    前言 本篇文章主要是记录本人在微信扫码支付过程中所遇到的问题,给大家一个借鉴作用,希望对你们有帮助 开发环境 nodejs v8.1.0 egg v1.1.0 准备工作 微信公众号-appid 微信商户号-mch_id key值(签名算法所需,其实就是一个32位的密码,可以用md5生成一个)(key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置) 扫码支付-统一下单 以下才用的是微信模式二,因为比较简单 let MD5 = req

  • 详解基于Node.js的微信JS-SDK后端接口实现代码

    做了一个网站,放到线上,用微信打开,点击分享,可是分享后发给朋友的链接卡片是微信默认自带的,如下: 这标题,描述以及图片是默认自带的,丑不说,分享给别人还以为是盗号网站呢,而接入微信的JSSDK后,分享可以自定义内容,如下: 我承认,虽然这分享的标题和内容也并不正经,但这不妨碍我表达我们可以通过微信JSSDK定义分享内容,接下来我们将一步一步从零实现JSSDK从后端Node.js的接入. 成为测试公众号开发者 登录测试公众号后台 首先我们需要在微信公众平台申请测试接口,地址:https://mp

  • Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例

    access_token 微信文档里存在两种access_token:普通 access_token 和 网页授权 access_token.具体区别参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 以下提到的 access_token 均为普通的 access_token 1. 首先我们先去看看是如何请求 access_token 的? 微信公众平台技术文档 GET请求:https://api.weixin

  • nodejs调取微信收货地址的方法

    本文实例为大家分享了nodejs调取微信收货地址的具体代码,供大家参考,具体内容如下 公众号调取微信收货地址条件: 1.微信调取收货地址API,公众号必须有支付权限. 2.配置对应使用收货地址功能的域名(域名配置请在公众平台网站-->开发者中心-->配置项-->网页服务-->网页授权获取用户基本信息中设置,) router.js var API = require('wechat-api'); var api = new API(config.wx_appid, config.wx

  • 基于node.js实现微信支付退款功能

    缘起 有付款就会有退款 注意,退款支持部分退款 左口袋的钱退到右口袋罗 这次发起的退款请求0.01元是实时到账的,因此,用户在小程序端发起的退款只是一个请求到后台,后台审核人员审核无误后才后微信发起退款操作. 引入第三方module 在package.json 中加入"weixin-pay": "^1.1.7"这一条 代码目录结构 入参 { transaction_id: '4200000005201712165508745023', // 交易 out_trade

  • nodeJS微信分享

    本文实例为大家分享了nodeJS微信分享的具体代码,供大家参考,具体内容如下 一.接入微信JSSDK 直接引用或者下载本地都行 二.JS请求node后台签名.随机数.时间戳之类的 function getWxSignature() { $.ajax({ url: "/activityWxShaer", type: 'post', data: { urlhref:location.href }, success: function(jsons) { var data = JSON.par

  • node.js实现微信JS-API封装接口的示例代码

    Wechat JS-API接口 功能: 用于管理和获取微信 JSSDK 生产的access_token.jsapi_ticket和签名(signature) Installation npm i wechat_interaction_jsapi Init let Jsapi = require("wechat_interaction_jsapi"); Usage WECHAT_APPID, WECHAT_APPSECRET 分别为开发者 id 和密码,在微信公众平台->开发-&g

  • 基于nodejs实现微信支付功能

    本文实例为大家分享了nodejs实现微信支付的具体代码,供大家参考,具体内容如下 通过nodejs使用微信支付最重要的就是微信的签名,在这里md5后的字符必须转化为大写 一.回复微信通知消息模版 message.ejs <xml> <return_code><![CDATA[<%-return_code%>]]></return_code> <return_msg><![CDATA[<%=return_msg%>]]

  • node打造微信个人号机器人的方法示例

    现在,日常生活已经离不开微信,本文将会抛砖引玉演示如何使用 wechaty 操作微信个人号做一些有意思的东西,可以实现自动通过好友请求.关键词回复.自动拉群等功能.大大提高了社群运营的效率. wechaty( https://chatie.io/wechaty/)是一款开源的微信个人号SDK,进行了一系列的封装,提供简单好用的接口,然后开发者可以在其之上进行微信机器人的开发.你可以用它来做很多事: 1)管理和维护好友: 2)快速有序地处理聊天信息 3)微信群管理 4)实现自动回复 5)-- 一.

  • 通过微信公众平台获取公众号文章的方法示例

    我之前自己维护了一个公众号,但因为个人关系很久没有更新了,今天上来缅怀一下,却偶然发现了一个获取微信公众号文章的方法. 之前获取方法有很多,通过搜狗.清博.网页端.客户端等等都还可以,这个可能并没有其他的优秀,但是操作简单,很容易理解. so. 首先需要有一个微信公众平台的账号 微信公众平台:https://mp.weixin.qq.com/ 登陆之后,进入首页,点击新建群发. 选择自建图文: 似乎像是公众号运营教学了 进入编辑页面之后,点击超链接 弹出选择框,我们在框中输入对应的公众号名字,即

  • uniapp实现微信公众号支付的方法步骤

    目录 1.申请企业服务号(必须企业认证) 2.获取appid 和秘钥 3.安全域名设置 4.代码实现 1.申请企业服务号(必须企业认证) https://mp.weixin.qq.com 2.获取appid 和秘钥 菜单 开发-基本配置 获取秘钥 .设置ip白名单 3.安全域名设置 进入公众号设置-功能设置配置 4.代码实现 点击请求优先去请求后台订单支付接口数据 将获取到的数据放入以下请求数据里面  callPay: function(response) { if (typeof Weixin

  • 微信公众号weixin-js-sdk使用方法总结

    目录 1.安装weixin-js-sdk 2.封装wechat.js 3.main.js 4.页面调用方式 5.如果你需要用到其他功能,在这里按照这种方式接着定义新的方法: 总结 JS-SDK说明文档 网页授权说明文档 微信公众号授权登录参考方案 http接口请求封装参考方案 记录微信公众号开发过程中遇到的问题以及解决方案: 1.安装weixin-js-sdk npm install weixin-js-sdk 2.封装wechat.js import wx from 'weixin-js-sd

  • C#实现微信公众号会员卡管理的示例代码

    为了更好地理解微信公众号--会员卡管理,作者特意花了不少的时间对其研究,并用c#开发出会员卡demo,主要包含会员卡创建.设置开卡字段.通过创建二维码来投放会员卡.同步会员卡数据/激活会员卡.拉取会员信息.更新会员信息.设置会员卡失效.删除会员卡,从这些可以清晰地看出是围绕会员卡的生命周期来研究的.结合文章中DEMO有助于大家快速理解会员卡接口. 1.会员卡创建 1).会员卡创建接口文档   支持开发者调用该接口创建会员卡,并获取card_id,用于投放.调用该接口前,请开发者详读创建卡券接口部

  • Electron+vue从零开始打造一个本地播放器的方法示例

    为什么要做? 女朋友工作是音频后期,平常会收集一些音频音乐,需要看音频的频谱波形,每次用au这种大型软件播放音乐看波形,很不方便,看到她这么辛苦,身为程序猿的我痛心疾首,于是,就有了这么一个小软件,软件涉及到的技术主要为electron,vue,node,波形的展示主要通过wavesurfer生成. 从零开始-搭建项目 项目通过vue脚手架搭建的,所以需要安装cli工具,如果已经装了,可以跳过这一步. npm install -g @vue/cli # OR yarn global add @v

  • Vue微信公众号网页分享的示例代码

    前言 今天做了个分享功能,反正挺诡异的,下面就来说一说步骤 后端使用egg.js,代码如下: 'use strict'; const Subscription = require('egg').Subscription; class AccessToken extends Subscription { static get schedule() { return { interval: '2h',//2小时获取一次 type: 'all', }; } async subscribe() { co

  • python爬取微信公众号文章的方法

    最近在学习Python3网络爬虫开发实践(崔庆才 著)刚好也学习到他使用代理爬取公众号文章这里,但是照着他的代码写,出现了一些问题.在这里我用到了这本书的前面讲的一些内容进行了完善.(作者写这个代码已经是半年前的事了,但腾讯的网站在这半年前进行了更新) 下面我直接上代码: TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive

  • PHP memcache在微信公众平台的应用方法示例

    本文实例讲述了PHP memcache在微信公众平台的应用方法.分享给大家供大家参考,具体如下: 现在微信公众平台大多数互动都是用户发送信息->微信分析并返回结果,这种模式功能比较单一.这里介绍另一种互动模式:用户发送信息->微信分析信息并提示下一步操作->用户发送信息->.......->微信返回结果.本文介绍运用sae里的memcache实现以上模式. 思路: 1.用户发送消息,微信会记录用户唯一的openid,将它的值赋予$fromUsername. 2.用memcac

  • PHP实现微信公众号验证Token的示例代码

    难度水平:初中级 适用人群:对微信公众号开发有认知跟实践的童鞋 阅读时间:8分钟 缘起 很久之前做过一次公众号的开发,当时就遇到了一个验证的小坑,但是由于时间紧任务急处理完了也就没在意,可谁知最近刚刚上马一个新的公众号项目又遇到了同样的小坑,痛定思痛决定奋笔疾书留下痕迹,省的以后再次忘记了.

随机推荐