Home  >  Article  >  Web Front-end  >  Detailed explanation of the steps to create a WeChat personal account robot using Node

Detailed explanation of the steps to create a WeChat personal account robot using Node

php中世界最好的语言
php中世界最好的语言Original
2018-05-15 13:50:342002browse

This time I will bring you a detailed explanation of the steps to make a WeChat personal account robot using node. What are the precautions for node to make a WeChat personal account robot? Here are practical cases, let’s take a look.

Nowadays, daily life is inseparable from WeChat. This article will give you a clue and demonstrate how to use wechaty to operate your WeChat personal account to do some interesting things. It can automatically implement friend requests and keyword replies , automatic group pulling and other functions. Greatly improved the efficiency of community operations.

wechaty (https://chatie.io/wechaty/) is an open source WeChat personal account SDK. It carries out a series of packages and provides simple and easy-to-use interfaces. Then Developers can develop WeChat robots on top of it. You can use it to do many things:

1) Manage and maintain friends; 2) Process chat messages quickly and orderly 3) WeChat group management 4) Implement automatic replies 5)...

1. Get started quickly

wechaty The project homepage says 6 lines of code to create a WeChat robot, so let’s give it a try. Note: 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()

These 6 lines of code implement logging in to the WeChat personal account and Print out received messages.

wechaty can be run through Docker and NPM. This article uses the npm method

node bot.js to start this personal account robot. At this time, the command line will print out a link. We will Open it in the browser and you will see a QR code. Scan the code to log in (Note: At the end of 2017, as WeChat gradually shut down support for WeChat web version login, WeChat accounts registered later do not support web WeChat login. I spent 105 RMB to buy an account and felt sorry for my wallet for 3 seconds)

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

The robot experience is at the end of the article. Sample code address: Github

2. Automatically pass friend requests

Through the previous sample code, you can find out how simple and powerful this library is. . Then let's implement the first small function: automatically request through friends

//···
.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')
}
})
//···

Here we listen to the friend event. You can get who sent what friend request. Here we have verified the request when adding friends. When the content of the friend request is [JS] or [JavaScript], the friend request will be automatically passed.

Copying the link to the browser and opening the QR code every time is not cool at all and it is not convenient to use on the server. At this time we can use the qrcode-terminal package to print out the QR code directly on the command line.

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

Run the node bot.js command line and the QR code will be printed directly, which is much more convenient.

3. Automatic reply

Now let’s implement the second small function: keyword automatic reply.

//···
.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之禅')
}
})
//···

Above we listen to message for message processing. message can receive all messages. We can determine whether it is a group chat message and reply with corresponding content based on the message. If you send [js], you will receive the set message and realize automatic reply.

4. Automatically pull groups

#As mentioned earlier, we mentioned the automatic reply of message keywords. By combining message processing and group management, we can Automatically attract groups based on keywords

//···
.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)
}
}
})
//···

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

Detailed explanation of vue custom filters filter steps

vue determines the usage of classes in the dom

The above is the detailed content of Detailed explanation of the steps to create a WeChat personal account robot using Node. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn