Message
This section gives the clear description of the Message Class ,its methods and their uses.
All wechat messages will be encapsulated as a Message
.
Global Class Message
Instance Methods
Instance methods | Return type |
---|---|
from() | Contact or null |
to() | Contact or null |
room() | Room or null |
text() | string |
say(text Or Contact Or File) | Promise |
type() | MessageType |
self() | boolean |
mention() | Promise |
mentionSelf() | Promise |
forward(to) | Promise |
date() | Date |
age() | Number |
toFileBox() | Promise |
toContact() | Promise |
toUrlLink() | Promise |
Static Method
Static Methods | Return type |
---|---|
find() | Promise |
findAll() | Promise |
Instance Methods
message.from() ⇒ Contact | null
By using message.from, you will receive the sender name from the message. If the method could not find the sender, it will return null
. See the following example of instance method of class Message
:
Example
const bot = new Wechaty()
bot
.on('message', async message => {
const contact = message.from()
const text = message.text()
const room = message.room()
if (room) {
const topic = await room.topic()
console.log(`Room: ${topic} Contact: ${contact.name()} Text: ${text}`)
} else {
console.log(`Contact: ${contact.name()} Text: ${text}`)
}
})
.start()
message.to() ⇒ Contact
| null
The method gets the destination of the message Message.to() will return null
if a message is in a room, use Message.room() to get the room.The method is also an instance method of class Message
.Here is an example below:
Example
const bot = new Wechaty()
bot
.on('message', async message => {
const contact = message.from()
const text = message.text()
const toContact = message.to()
if (toContact) {
const name = toContact.name()
console.log(`toContact: ${name} Contact: ${contact.name()} Text: ${text}`)
} else {
console.log(`Contact: ${contact.name()} Text: ${text}`)
}
})
.start()
message.room() ⇒ Room
| null
By using the message.room
you get the room from the message.If that particular message is not in a room, then will return null
.
Example
const bot = new Wechaty()
bot
.on('message', async message => {
const contact = message.from()
const text = message.text()
const room = message.room()
if (room) {
const topic = await room.topic()
console.log(`Room: ${topic} Contact: ${contact.name()} Text: ${text}`)
} else {
console.log(`Contact: ${contact.name()} Text: ${text}`)
}
})
.start()
message.text() ⇒ string
This method returns the text context for the message.
Example
const bot = new Wechaty()
bot
.on('message', async message => {
const contact = message.from()
const text = message.text()
const room = message.room()
if (room) {
const topic = await room.topic()
console.log(`Room: ${topic} Contact: ${contact.name()} Text: ${text}`)
} else {
console.log(`Contact: ${contact.name()} Text: ${text}`)
}
})
.start()
message.toRecalled() ⇒ Promise <Message | null>
By using message.toRecalled
, you will get the text content of the recalled message.
Here is an example:
Example
const bot = new Wechaty()
bot
.on('message', async message => {
if (message.type() === bot.Message.Type.Recalled) {
const recalledMessage = await message.toRecalled()
console.log(`Message: ${recalledMessage} has been recalled.`)
}
})
.start()
message.say(textOrContactOrFileOrUrlLinkOrMiniProgram) ⇒ Promise <void>
By using message.say
you can reply a Text, Contact Card, Media File or Link message to the sender.The method takes in 5 types of parameters,more details is given below :
Param | Type | Description |
---|---|---|
text Or Contact Or File Or UrlLink Or MiniProgram | string | Contact | FileBox | UrlLink | MiniProgram | send text, Contact, UrlLink, MiniProgram or file to bot. You can use FileBox to send file |
Tips: This function depends on the Puppet Implementation. See 🏻 puppet-compatible-table
See🏻: Examples/ding-dong-bot
Example
import { FileBox } from 'file-box'
import {
Wechaty,
UrlLink,
MiniProgram,
} from 'wechaty'
const bot = new Wechaty()
bot
.on('message', async message => {
// 1. send Image
if (/^ding$/i.test(message.text())) {
const fileBox = FileBox.fromUrl('https://wechaty.github.io/wechaty/images/bot-qr-code.png')
await message.say(fileBox)
}
// 2. send Text
if (/^dong$/i.test(message.text())) {
await message.say('dingdingding')
}
// 3. send Contact
if (/^lijiarui$/i.test(message.text())) {
const contactCard = await bot.Contact.find({name: 'lijiarui'})
if (!contactCard) {
console.log('not found')
return
}
await message.say(contactCard)
}
// 4. send UrlLink
if (/^link$/i.test(message.text())) {
const urlLink = new UrlLink({
description: 'Wechaty is a Bot SDK for Wechat Individual Account which can help you create a bot in 6 lines of javascript, with cross-platform support including Linux, Windows, Darwin(OSX/Mac) and Docker.',
thumbnailUrl: 'https://camo.githubusercontent.com/f310a2097d4aa79d6db2962fa42bb3bb2f6d43df/68747470733a2f2f6368617469652e696f2f776563686174792f696d616765732f776563686174792d6c6f676f2d656e2e706e67',
title: 'Wechaty',
url: 'https://github.com/wechaty/wechaty',
});
await message.say(urlLink);
}
// 5. send MiniProgram (only supported by `wechaty-puppet-macpro`)
if (/^mini-program$/i.test(message.text())) {
const miniProgram = new MiniProgram ({
appid : 'gh_0aa444a25adc',
title : '我正在使用Authing认证身份,你也来试试吧',
pagePath : 'routes/explore.html',
thumbUrl : '30590201000452305002010002041092541302033d0af802040b30feb602045df0c2c5042b777875706c6f61645f31373533353339353230344063686174726f6f6d3131355f313537363035393538390204010400030201000400',
thumbKey : '42f8609e62817ae45cf7d8fefb532e83',
});
await message.say(miniProgram);
}
})
.start()
message.type() ⇒ MessageType
This method gets the type of the wechat message. The different method types supported are listed below:
Message Type |
---|
MessageType.Unknown |
MessageType.Attachment |
MessageType.Audio |
MessageType.Contact |
MessageType.Emoticon |
MessageType.Image |
MessageType.Text |
MessageType.Video |
MessageType.Url |
Example
const bot = new Wechaty()
if (message.type() === bot.Message.Type.Text) {
console.log('This is a text message')
}
message.self() ⇒ boolean
This method returns true
if message is sent from self or else it returns false
.
Example
if (message.self()) {
console.log('this message is sent by myself!')
}
message.mention() ⇒ Promise <Contact []>
The method gets you the message mentioned contactList and returns Promise <Contact []>
- > message mentioned contactList.
Web | Mac PC Client | iOS Mobile | android Mobile | |
---|---|---|---|---|
[You were mentioned] tip ([有人@我]的提示) | ✘ | √ | √ | √ |
Identify magic code (8197) by copy & paste in mobile | ✘ | √ | √ | ✘ |
Identify magic code (8197) by programming | ✘ | ✘ | ✘ | ✘ |
Identify two contacts with the same roomAlias by [You were mentioned] tip | ✘ | ✘ | √ | √ |
Example
const contactList = await message.mention()
console.log(contactList)
message.mentionSelf() ⇒ Promise <boolean>
The method checks if a message is a self mention.It returns true
for self mention messages.Here is an example:
Example
if (await message.mentionSelf()) {
console.log('this message were mentioned me! [You were mentioned] tip ([有人@我]的提示)')
}
message.forward(to) ⇒ Promise <void>
By using this method you can forward the received message. This action doesn't trigger the on-message events.
Param | Type | Description |
---|---|---|
to (Recipient) | Sayable | Array | Room or Contact The recipient of the message, the room, or the contact |
Example
const bot = new Wechaty()
bot
.on('message', async message => {
const room = await bot.Room.find({topic: 'wechaty'})
if (room) {
await message.forward(room)
console.log('forward this message to wechaty room!')
}
})
.start()
message.date() ⇒ Date
The method returns the message sent date.
message.age() ⇒ number
The method returns the age of the message in seconds.For example, the message is sent at time 8:43:01
, and when we received it in Wechaty, the time is 8:43:15
, then the age() will return 8:43:15 - 8:43:01 = 14 (seconds)
.
message.toFileBox() ⇒ Promise <FileBox>
This method extracts the Media file from the Message, and puts it into the FileBox.
Tips: This function is depending on the Puppet Implementation, see🏻 puppet-compatible-table
message.toContact() ⇒ Promise <Contact>
The method gets share card of the Message Extract and the contact card from the Message, and encapsulates it into Contact class.
Tips: This function is depending on the Puppet Implementation, see 🏻 puppet-compatible-table
message.toUrlLink() ⇒ Promise <UrlLink>
The method extracts the Url Link from the Message, and encapsulate it into UrlLink class. Tips: This function is depending on the Puppet Implementation, see 🏻 puppet-compatible-table
Static Methods
Message.find() ⇒ Promise <Message | null>
By using message.find
you can find the messages in cache.
Message.findAll() ⇒ Promise <Message []>
By using message.findAll
you can find the messages in cache.