Home  >  Article  >  Web Front-end  >  How to use node to make a personal account robot

How to use node to make a personal account robot

php中世界最好的语言
php中世界最好的语言Original
2018-06-06 09:43:081882browse

This time I will show you how to use node to make a personal account robot, and what are the precautions for using node to make a personal account robot. The following is a practical case, let's take a look.

Nowadays, daily life is inseparable from WeChat. This article will introduce you to how to use wechaty to operate your WeChat personal account to do some interesting things. It can realize functions such as automatic friend requests, keyword replies, and automatic group gatherings. . 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, and then developers can WeChat robot development. 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 into the WeChat personal account and printing out the 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 Achieve automatic group chatting 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)
}
}
})
//···

The above code operates group chat through Room. At this time, reply [Add Group] and you will be automatically added to the group. Of course, we can do more, such as using Room.del to kick out a certain group member.

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:

How to get the absolute position of the DOM element in the front-end interface

How to optimize Angular code

The above is the detailed content of How to use node to make a personal account robot. 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