提交 4f104db5 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

minor fixes

上级 5e1d4c38
......@@ -90,7 +90,7 @@ bot
* 1. reply 'dong'
*/
log.info('Bot', 'REPLY: dong')
msg.say('dong')
await msg.say('dong')
const joinWechaty = `Join Wechaty Developers' Community\n\n` +
`Wechaty is used in many ChatBot projects by hundreds of developers.\n\n` +
......@@ -107,7 +107,7 @@ bot
BOT_QR_CODE_IMAGE_FILE,
)
log.info('Bot', 'REPLY: %s', fileBox)
log.info('Bot', 'REPLY: %s', fileBox.toString())
await msg.say(fileBox)
/**
......
......@@ -61,11 +61,7 @@ export class FriendRequest extends Accessory {
id : string,
): T['prototype'] {
const newFriendRequest = new (this as any)(id)
const hitPayload = this.puppet.cacheFriendRequestPayload.get(id)
if (hitPayload) {
newFriendRequest.payload = hitPayload
}
newFriendRequest.payload = this.puppet.cacheFriendRequestPayload.get(id)
return newFriendRequest
}
......
......@@ -152,15 +152,16 @@ export class Message extends Accessory implements Sayable {
// `#${MessageDirection[this.direction]}`,
`#${MessageType[this.type()]}`,
'(',
this.room() ? (this.room() + '') : '',
this.from(),
this.room() ? '@' + this.room() : '',
'',
this.to(),
')',
]
if (this.type() === Message.Type.Text) {
msgStrList.push(`<${this.text()}>`)
} else {
log.verbose('Message', 'toString() this.type()=%s', Message.Type[this.type()])
log.silly('Message', 'toString() for message type: ', Message.Type[this.type()])
if (!this.payload) {
throw new Error('no payload')
......
......@@ -528,8 +528,29 @@ export class Bridge extends EventEmitter {
}
public async getMessage(id: string): Promise<WebMessageRawPayload> {
const rawPayload = await this.proxyWechaty('getMessage', id)
return rawPayload
try {
return await Misc.retry(async (retry, attempt) => {
log.silly('PuppetPuppeteerBridge', 'getMessage(%s) retry attempt %d',
id,
attempt,
)
try {
const rawPayload = await this.proxyWechaty('getMessage', id)
if (rawPayload && Object.keys(rawPayload).length > 0) {
return rawPayload
}
throw new Error('got empty return value at attempt: ' + attempt)
} catch (e) {
log.verbose('PuppetPuppeteerBridge', 'getMessage() proxyWechaty(getMessage, %s) exception: %s', id, e.message)
retry(e)
}
})
} catch (e) {
log.error('PuppetPuppeteerBridge', 'promiseRetry() getContact() finally FAIL: %s', e.message)
throw e
}
}
public async getContact(id: string): Promise<WebContactRawPayload | WebRoomRawPayload> {
......@@ -552,20 +573,6 @@ export class Bridge extends EventEmitter {
}
})
// return await retryPromise({ max: max, backoff: backoff }, async (attempt: number) => {
// log.silly('PuppetPuppeteerBridge', 'getContact() retryPromise: attampt %d/%d time for timeout %d',
// attempt, max, timeout)
// try {
// const r = await this.proxyWechaty('getContact', id)
// if (r) {
// return r
// }
// throw new Error('got empty return value at attempt: ' + attempt)
// } catch (e) {
// log.silly('PuppetPuppeteerBridge', 'proxyWechaty(getContact, %s) exception: %s', id, e.message)
// throw e
// }
// })
} catch (e) {
log.error('PuppetPuppeteerBridge', 'promiseRetry() getContact() finally FAIL: %s', e.message)
throw e
......
......@@ -308,7 +308,7 @@ export class Firer {
try {
[leaverName, removerName] = this.parseRoomLeave(rawPayload.Content)
} catch (e) {
log.warn('PuppetPuppeteerFirer', 'fireRoomLeave() exception: %s', e.message)
log.silly('PuppetPuppeteerFirer', 'fireRoomLeave() %s', e.message)
return false
}
log.silly('PuppetPuppeteerFirer', 'fireRoomLeave() got leaverName: %s', leaverName)
......
......@@ -355,6 +355,10 @@ export class PuppetPuppeteer extends Puppet {
} else {
throw new Error('parse found a room message, but neither FromUserName nor ToUserName is a room(/^@@/)')
}
// console.log('rawPayload.FromUserName: ', rawPayload.FromUserName)
// console.log('rawPayload.ToUserName: ', rawPayload.ToUserName)
// console.log('rawPayload.MMPeerUserName: ', rawPayload.MMPeerUserName)
}
if (rawPayload.ToUserName) {
......@@ -576,7 +580,7 @@ export class PuppetPuppeteer extends Puppet {
receiver : Receiver,
text : string,
): Promise<void> {
log.verbose('PuppetPuppeteer', 'messageSendText(receiver=%s, text=%s)', receiver, text)
log.verbose('PuppetPuppeteer', 'messageSendText(receiver=%s, text=%s)', JSON.stringify(receiver), text)
let destinationId
......@@ -860,7 +864,7 @@ export class PuppetPuppeteer extends Puppet {
// let currNum = rawPayload.MemberList && rawPayload.MemberList.length || 0
// let prevNum = room.memberList().length // rawPayload && rawPayload.MemberList && this.rawObj.MemberList.length || 0
let prevLength = -1
let prevLength = 0
/**
* @todo use Misc.retry() to replace the following loop
......@@ -870,19 +874,27 @@ export class PuppetPuppeteer extends Puppet {
rawPayload = await this.bridge.getContact(id) as undefined | WebRoomRawPayload
if (rawPayload) {
const currLength = rawPayload.MemberList && rawPayload.MemberList.length || 0
const currLength = rawPayload.MemberList && rawPayload.MemberList.length || -1
log.silly('PuppetPuppeteer', `roomPayload() this.bridge.getContact(%s) MemberList.length:%d at ttl:%d`,
log.silly('PuppetPuppeteer', `roomPayload() this.bridge.getContact(%s) MemberList.length:(prev:%d, curr:%d) at ttl:%d`,
id,
prevLength,
currLength,
ttl,
)
if (prevLength === currLength) {
log.silly('PuppetPuppeteer', `roomPayload() puppet.getContact(${id}) done at ttl:%d`, ttl)
log.silly('PuppetPuppeteer', `roomPayload() puppet.getContact(%s) done at ttl:%d with length:%d`, this.id, ttl, currLength)
return rawPayload
}
prevLength = currLength
if (currLength >= prevLength) {
prevLength = currLength
} else {
log.warn('PuppetPuppeteer', 'roomRawPayload() currLength(%d) <= prevLength(%d) ???',
currLength,
prevLength,
)
}
}
log.silly('PuppetPuppeteer', `roomPayload() puppet.getContact(${id}) retry at ttl:%d`, ttl)
......@@ -1589,7 +1601,7 @@ export class PuppetPuppeteer extends Puppet {
file : FileBox,
): Promise<void> {
log.verbose('PuppetPuppeteer', 'messageSendFile(receiver=%s, file=%s)',
receiver,
JSON.stringify(receiver),
file.toString(),
)
......
......@@ -457,6 +457,10 @@ export abstract class Puppet extends EventEmitter implements Sayable {
): Promise<ContactPayload> {
log.silly('Puppet', 'contactPayload(id=%s, noCache=%s) @ %s', id, noCache, this)
if (!id) {
throw new Error('no id')
}
if (noCache) {
log.silly('Puppet', 'contactPayload() cache PURGE')
this.cacheContactPayload.del(id)
......@@ -494,6 +498,10 @@ export abstract class Puppet extends EventEmitter implements Sayable {
): Promise<FriendRequestPayload> {
log.verbose('Puppet', 'friendRequestPayload(id=%s, noCache=%s)', id, noCache)
if (!id) {
throw new Error('no id')
}
if (noCache) {
log.silly('Puppet', 'friendRequestPayload() cache PURGE')
this.cacheFriendRequestPayload.del(id)
......@@ -530,6 +538,10 @@ export abstract class Puppet extends EventEmitter implements Sayable {
): Promise<MessagePayload> {
log.verbose('Puppet', 'messagePayload(id=%s, noCache=%s)', id, noCache)
if (!id) {
throw new Error('no id')
}
if (noCache) {
log.silly('Puppet', 'messagePayload() cache PURGE')
this.cacheMessagePayload.del(id)
......@@ -687,6 +699,10 @@ export abstract class Puppet extends EventEmitter implements Sayable {
): Promise<RoomPayload> {
log.verbose('Puppet', 'roomPayload(id=%s, noCache=%s)', id, noCache)
if (!id) {
throw new Error('no id')
}
if (noCache) {
log.silly('Puppet', 'roomPayload() cache PURGE')
this.cacheRoomPayload.del(id)
......
......@@ -219,7 +219,7 @@ export class Room extends Accessory implements Sayable {
*/
public toString() {
if (this.payload && this.payload.topic) {
return `Room<${this.topic()}>`
return `Room<${this.payload.topic}>`
}
return `Room<${this.id || ''}>`
}
......@@ -776,13 +776,7 @@ export class Room extends Accessory implements Sayable {
* @returns {Promise<void>}
*/
public async sync(): Promise<void> {
// TODO: make it work with the old dirty payload when in re-syncing...
// if (this.isReady()) {
// this.dirtyObj = this.payload
// }
this.payload = undefined
await this.ready()
await this.ready(true)
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册