Room
All wechat rooms(groups) will be encapsulated as a Room.
Classes
All wechat rooms(groups) will be encapsulated as a Room.
Typedefs
The filter to find the room: {topic: string | RegExp} RoomEventName
Room Class Event Type RoomEventFunction
Room Class Event Function RoomMemberQueryFilter
The way to search member by Room.member()
Room
All wechat rooms(groups) will be encapsulated as a Room.
Kind: global class Properties
Name
Type
Description
id
string
Get Room id. This function is depending on the Puppet Implementation, see puppet-compatible-table
instance
.sync() ⇒
Promise <void>
.say(textOrContactOrFileOrUrl, ...mentionList) ⇒
Promise <void>
.on(event, listener) ⇒
Room
.add(contact) ⇒
Promise <void>
.del(contact) ⇒
Promise <void>
.quit() ⇒
Promise <void>
.topic([newTopic]) ⇒
Promise <void | string>
.announce([text]) ⇒
Promise <void | string>
.qrcode() ⇒
Promise <string>
.alias(contact) ⇒
Promise <null | string>
.has(contact) ⇒
Promise <boolean>
.memberAll([query]) ⇒
Promise <Contact []>
.member(queryArg) ⇒
Promise <Contact | null>
.owner() ⇒
Contact
|null
.avatar() ⇒
Promise <FileBox>
static
.create(contactList, [topic]) ⇒
Promise <Room>
.findAll([query]) ⇒
Promise <Room []>
.find(query) ⇒
Promise <Room | null>
room.sync() ⇒ Promise <void>
Promise <void>
Force reload data for Room, Sync data from lowlevel API again.
Kind: instance method of Room
Example
await room.sync()
room.say(textOrContactOrFileOrUrlLinkOrMiniProgram, ...mentionList) ⇒ Promise <void>
Promise <void>
Send message inside Room, if set mentionList, wechaty will mention the contact list as well.
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Param
Type
Description
textOrContactOrFileOrUrlLinkOrMiniProgram
string
| Contact
| FileBox
| UrlLink
| MiniProgram
Send text
, media file
or link
inside Room. You can use FileBox to send file
...mentionList
Contact []
Send content inside Room, and mention @contact list.
Example
import { FileBox } from 'file-box'
import {
Wechaty,
UrlLink,
MiniProgram,
} from 'wechaty'
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'wechaty'})
// 1. Send text inside Room
await room.say('Hello world!')
// 2. Send media file inside Room
import { FileBox } from 'file-box'
const fileBox1 = FileBox.fromUrl('https://chatie.io/wechaty/images/bot-qr-code.png')
const fileBox2 = FileBox.fromLocal('/tmp/text.txt')
await room.say(fileBox1)
await room.say(fileBox2)
// 3. Send Contact Card in a room
const contactCard = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any of the room member
await room.say(contactCard)
// 4. Send text inside room and mention @mention contact
const members = await room.memberAll() // all members in this room
const someMembers = members.slice(0, 3);
await room.say('Hello world!', ...someMembers)
// 5. send Link inside room
const linkPayload = new UrlLink({
description : 'WeChat Bot SDK for Individual Account, Powered by TypeScript, Docker, and Love',
thumbnailUrl: 'https://avatars0.githubusercontent.com/u/25162437?s=200&v=4',
title : 'Welcome to Wechaty',
url : 'https://github.com/chatie/wechaty',
})
await room.say(linkPayload)
// 6. send MiniProgram (only supported by `wechaty-puppet-macpro`)
const miniProgram = new MiniProgram ({
appid : 'gh_0aa444a25adc',
title : '我正在使用Authing认证身份,你也来试试吧',
pagePath : 'routes/explore.html',
description : '身份管家',
thumbUrl : '30590201000452305002010002041092541302033d0af802040b30feb602045df0c2c5042b777875706c6f61645f31373533353339353230344063686174726f6f6d3131355f313537363035393538390204010400030201000400',
thumbKey : '42f8609e62817ae45cf7d8fefb532e83',
});
await room.say(miniProgram);
room.on(event, listener) ⇒ this
this
Kind: instance method of Room
Returns: this
- - Room for chain
Param
Type
Description
Example (Event:join )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your wechat
if (room) {
room.on('join', (room, inviteeList, inviter) => {
const nameList = inviteeList.map(c => c.name()).join(',')
console.log(`Room got new member ${nameList}, invited by ${inviter}`)
})
}
Example (Event:leave )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your wechat
if (room) {
room.on('leave', (room, leaverList) => {
const nameList = leaverList.map(c => c.name()).join(',')
console.log(`Room lost member ${nameList}`)
})
}
Example (Event:topic )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your wechat
if (room) {
room.on('topic', (room, topic, oldTopic, changer) => {
console.log(`Room topic changed from ${oldTopic} to ${topic} by ${changer.name()}`)
})
}
Example (Event:invite )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'topic of your room'}) // change `event-room` to any room topic in your wechat
if (room) {
room.on('invite', roomInvitation => roomInvitation.accept())
}
room.add(contact) ⇒ Promise <void>
Promise <void>
Add contact in a room
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Param
Type
contact
Contact
Example
const bot = new Wechaty()
await bot.start()
// after logged in...
const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any contact in your wechat
const room = await bot.Room.find({topic: 'wechat'}) // change 'wechat' to any room topic in your wechat
if (room) {
try {
await room.add(contact)
} catch(e) {
console.error(e)
}
}
room.del(contact) ⇒ Promise <void>
Promise <void>
Delete a contact from the room It works only when the bot is the owner of the room
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Param
Type
contact
Contact
Example
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'wechat'}) // change 'wechat' to any room topic in your wechat
const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any room member in the room you just set
if (room) {
try {
await room.del(contact)
} catch(e) {
console.error(e)
}
}
room.quit() ⇒ Promise <void>
Promise <void>
Bot quit the room itself
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Example
await room.quit()
room.topic([newTopic]) ⇒ Promise <void | string>
Promise <void | string>
SET/GET topic from the room
Kind: instance method of Room
Param
Type
Description
[newTopic]
string
If set this para, it will change room topic.
Example (When you say anything in a room, it will get room topic. )
const bot = new Wechaty()
bot
.on('message', async m => {
const room = m.room()
if (room) {
const topic = await room.topic()
console.log(`room topic is : ${topic}`)
}
})
.start()
Example (When you say anything in a room, it will change room topic. )
const bot = new Wechaty()
bot
.on('message', async m => {
const room = m.room()
if (room) {
const oldTopic = await room.topic()
await room.topic('change topic to wechaty!')
console.log(`room topic change from ${oldTopic} to ${room.topic()}`)
}
})
.start()
room.announce([text]) ⇒ Promise <void | string>
Promise <void | string>
SET/GET announce from the room
Tips: It only works when bot is the owner of the room.
This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Param
Type
Description
[text]
string
If set this para, it will change room announce.
Example (When you say anything in a room, it will get room announce. )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'your room'})
const announce = await room.announce()
console.log(`room announce is : ${announce}`)
Example (When you say anything in a room, it will change room announce. )
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'your room'})
const oldAnnounce = await room.announce()
await room.announce('change announce to wechaty!')
console.log(`room announce change from ${oldAnnounce} to ${room.announce()}`)
room.qrcode() ⇒ Promise <string>
Promise <string>
Get QR Code of the Room from the room, which can be used as scan and join the room.
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
room.alias(contact) ⇒ Promise <string | null>
Promise <string | null>
Return contact's roomAlias in the room
Kind: instance method of Room
Returns: Promise <string | null>
- - If a contact has an alias in room, return string, otherwise return null
Param
Type
contact
Contact
Example
const bot = new Wechaty()
bot
.on('message', async m => {
const room = m.room()
const contact = m.from()
if (room) {
const alias = await room.alias(contact)
console.log(`${contact.name()} alias is ${alias}`)
}
})
.start()
room.has(contact) ⇒ Promise <boolean>
Promise <boolean>
Check if the room has member contact
, the return is a Promise and must be await
-ed
Kind: instance method of Room
Returns: Promise.
- Return true
if has contact, else return false
.
Param
Type
contact
Contact
Example (Check whether 'lijiarui' is in the room 'wechaty')
const bot = new Wechaty()
await bot.start()
// after logged in...
const contact = await bot.Contact.find({name: 'lijiarui'}) // change 'lijiarui' to any of contact in your wechat
const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any of the room in your wechat
if (contact && room) {
if (await room.has(contact)) {
console.log(`${contact.name()} is in the room wechaty!`)
} else {
console.log(`${contact.name()} is not in the room wechaty!`)
}
}
room.memberAll([query]) ⇒ Promise <Contact []>
Promise <Contact []>
Find all contacts in a room
definition
name
the name-string set by user-self, should be called name, equal toContact.name()
roomAlias
the name-string set by user-self in the room, should be called roomAliascontactAlias
the name-string set by bot for others, should be called alias, equal toContact.alias()
Kind: instance method of Room
Param
Type
Description
[query]
RoomMemberQueryFilter
| string
Optional parameter, When use memberAll(name:string), return all matched members, including name, roomAlias, contactAlias
Example
const memberList: Conatct[] = await room.memberAll()
console.log(`room all member list: `, memberList)
const memberContactList: Conatct[] = await room.memberAll(`abc`)
console.log(`contact list with all name, room alias, alias are abc:`, memberContactList)
room.member(queryArg) ⇒ Promise <Contact | null>
Promise <Contact | null>
Find all contacts in a room, if get many, return the first one.
Kind: instance method of Room
Param
Type
Description
queryArg
RoomMemberQueryFilter
| string
When use member(name:string), return all matched members, including name, roomAlias, contactAlias
Example (Find member by name)
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any room name in your wechat
if (room) {
const member = await room.member('lijiarui') // change 'lijiarui' to any room member in your wechat
if (member) {
console.log(`wechaty room got the member: ${member.name()}`)
} else {
console.log(`cannot get member in wechaty room!`)
}
}
Example (Find member by MemberQueryFilter)
const bot = new Wechaty()
await bot.start()
// after logged in...
const room = await bot.Room.find({topic: 'wechaty'}) // change 'wechaty' to any room name in your wechat
if (room) {
const member = await room.member({name: 'lijiarui'}) // change 'lijiarui' to any room member in your wechat
if (member) {
console.log(`wechaty room got the member: ${member.name()}`)
} else {
console.log(`cannot get member in wechaty room!`)
}
}
room.owner() ⇒ Contact
| null
Contact
| null
Get room's owner from the room.
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Example
const owner = room.owner()
room.avatar() ⇒ Promise <FileBox>
Promise <FileBox>
Get room's avatar
Tips: This function is depending on the Puppet Implementation, see puppet-compatible-table
Kind: instance method of Room
Example
const owner = room.avatar()
Room.create(contactList, [topic]) ⇒ Promise <Room>
Promise <Room>
Create a new room.
Kind: static method of Room
Param
Type
contactList
Array
[topic]
string
Example (Creat a room with 'lijiarui' and 'juxiaomi', the room topic is 'ding - created')
const helperContactA = await Contact.find({ name: 'lijiarui' }) // change 'lijiarui' to any contact in your wechat
const helperContactB = await Contact.find({ name: 'juxiaomi' }) // change 'juxiaomi' to any contact in your wechat
const contactList = [helperContactA, helperContactB]
console.log('Bot', 'contactList: %s', contactList.join(','))
const room = await Room.create(contactList, 'ding')
console.log('Bot', 'createDingRoom() new ding room created: %s', room)
await room.topic('ding - created')
await room.say('ding - created')
Room.findAll([query]) ⇒ Promise <Room []>
Promise <Room []>
Find room by by filter: {topic: string | RegExp}, return all the matched room
Kind: static method of Room
Param
Type
[query]
Example
const bot = new Wechaty()
await bot.start()
// after logged in
const roomList = await bot.Room.findAll() // get the room list of the bot
const roomList = await bot.Room.findAll({topic: 'wechaty'}) // find all of the rooms with name 'wechaty'
Room.find(query) ⇒ Promise <Room>
Promise <Room>
Try to find a room by filter: {topic: string | RegExp}. If get many, return the first one.
Kind: static method of Room
Returns: Promise <Room>
- If can find the room, return Room, or return null
Param
Type
query
Example
const bot = new Wechaty()
await bot.start()
// after logged in...
const roomList = await bot.Room.find()
const roomList = await bot.Room.find({topic: 'wechaty'})
RoomQueryFilter
The filter to find the room: {topic: string | RegExp}
Kind: global typedef Properties
Name
Type
topic
string
RoomEventName
Room Class Event Type
Kind: global typedef Properties
Name
Type
Description
join
string
Emit when anyone join any room.
topic
string
Get topic event, emitted when someone change room topic.
leave
string
Emit when anyone leave the room. If someone leaves the room by themselves, wechat will not notice other people in the room, so the bot will never get the "leave" event.
RoomEventFunction
Room Class Event Function
Kind: global typedef Properties
Name
Type
Description
room-join
function
(this: Room, inviteeList: Contact[] , inviter: Contact) => void
room-topic
function
(this: Room, topic: string, oldTopic: string, changer: Contact) => void
room-leave
function
(this: Room, leaver: Contact) => void
RoomMemberQueryFilter
The way to search member by Room.member()
Kind: global typedef Properties
Name
Type
Description
name
string
Find the contact by wechat name in a room, equal to Contact.name()
.
roomAlias
string
Find the contact by alias set by the bot for others in a room.
contactAlias
string
Find the contact by alias set by the contact out of a room, equal to Contact.alias()
. More Detail
Last updated
Was this helpful?