Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.Veneno.
wechaty
提交
8700aa23
W
wechaty
项目概览
.Veneno.
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8700aa23
编写于
6月 09, 2018
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
code clean & bug fix & refactoring
上级
ed72a78b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
190 addition
and
108 deletion
+190
-108
src/contact.ts
src/contact.ts
+27
-0
src/puppet-padchat/bridge.ts
src/puppet-padchat/bridge.ts
+29
-41
src/puppet-padchat/padchat-rpc.ts
src/puppet-padchat/padchat-rpc.ts
+41
-9
src/puppet-padchat/padchat-schemas.ts
src/puppet-padchat/padchat-schemas.ts
+1
-0
src/puppet-padchat/puppet-padchat.ts
src/puppet-padchat/puppet-padchat.ts
+49
-20
src/puppet-padchat/pure-function-helper.ts
src/puppet-padchat/pure-function-helper.ts
+9
-26
src/puppet/puppet.ts
src/puppet/puppet.ts
+15
-12
src/room.ts
src/room.ts
+19
-0
未找到文件。
src/contact.ts
浏览文件 @
8700aa23
...
@@ -186,6 +186,11 @@ export class Contact extends Accessory implements Sayable {
...
@@ -186,6 +186,11 @@ export class Contact extends Accessory implements Sayable {
}
}
}
}
// TODO
public
static
async
delete
(
contact
:
Contact
):
Promise
<
void
>
{
log
.
verbose
(
'
Cotnact
'
,
'
static delete(%s)
'
,
contact
.
id
)
}
/**
/**
*
*
* Instance properties
* Instance properties
...
@@ -600,6 +605,28 @@ export class Contact extends Accessory implements Sayable {
...
@@ -600,6 +605,28 @@ export class Contact extends Accessory implements Sayable {
return
this
.
payload
&&
this
.
payload
.
weixin
||
null
return
this
.
payload
&&
this
.
payload
.
weixin
||
null
}
}
/**
*
* Need a new class for manage user profile
*
*/
// TODO:
public
async
qrcode
():
Promise
<
string
>
{
log
.
verbose
(
'
Contact
'
,
'
qrcode()
'
)
if
(
!
this
.
self
())
{
throw
new
Error
(
'
only can get qrcode for the login userself
'
)
}
return
'
url of qrcode data for this contact(self only)
'
}
public
async
setAvatar
(
file
:
FileBox
):
Promise
<
void
>
{
log
.
verbose
(
'
Contact
'
,
'
setAvatar(%s)
'
,
file
.
name
)
// should not in contact class ?
// too many methods that can only use on the login-ed userself.
}
}
}
export
default
Contact
export
default
Contact
src/puppet-padchat/bridge.ts
浏览文件 @
8700aa23
...
@@ -86,9 +86,6 @@ export class Bridge extends EventEmitter {
...
@@ -86,9 +86,6 @@ export class Bridge extends EventEmitter {
super
()
// for EventEmitter
super
()
// for EventEmitter
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
constructor()
'
)
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
constructor()
'
)
// this.userId = options.token
// this.initCache()
this
.
autoData
=
{}
this
.
autoData
=
{}
this
.
padchatRpc
=
new
PadchatRpc
(
options
.
endpoint
,
options
.
token
)
this
.
padchatRpc
=
new
PadchatRpc
(
options
.
endpoint
,
options
.
token
)
...
@@ -215,7 +212,9 @@ export class Bridge extends EventEmitter {
...
@@ -215,7 +212,9 @@ export class Bridge extends EventEmitter {
public
logout
():
void
{
public
logout
():
void
{
if
(
!
this
.
selfId
)
{
if
(
!
this
.
selfId
)
{
throw
new
Error
(
'
no username
'
)
// throw new Error('no username')
log
.
warn
(
'
PuppetPadchatBridge
'
,
'
logout() selfId not exist, already logout-ed
'
)
return
}
}
this
.
selfId
=
undefined
this
.
selfId
=
undefined
...
@@ -568,7 +567,7 @@ export class Bridge extends EventEmitter {
...
@@ -568,7 +567,7 @@ export class Bridge extends EventEmitter {
public
async
syncRoomMember
(
public
async
syncRoomMember
(
roomId
:
string
,
roomId
:
string
,
):
Promise
<
{
[
contactId
:
string
]:
PadchatRoomMemberPayload
}
>
{
):
Promise
<
{
[
contactId
:
string
]:
PadchatRoomMemberPayload
}
>
{
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
syncRoomMember(%s)
'
,
roomId
)
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
syncRoomMember(%s)
'
,
roomId
)
const
memberListPayload
=
await
this
.
padchatRpc
.
WXGetChatRoomMember
(
roomId
)
const
memberListPayload
=
await
this
.
padchatRpc
.
WXGetChatRoomMember
(
roomId
)
...
@@ -576,15 +575,14 @@ export class Bridge extends EventEmitter {
...
@@ -576,15 +575,14 @@ export class Bridge extends EventEmitter {
throw
new
Error
(
'
no memberListPayload
'
)
throw
new
Error
(
'
no memberListPayload
'
)
}
}
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
syncRoomMember(%s) total %d members
'
,
roomId
,
Object
.
keys
(
memberListPayload
).
length
,
)
const
memberDict
:
{
[
contactId
:
string
]:
PadchatRoomMemberPayload
}
=
{}
const
memberDict
:
{
[
contactId
:
string
]:
PadchatRoomMemberPayload
}
=
{}
for
(
const
memberPayload
of
memberListPayload
.
member
)
{
for
(
const
memberPayload
of
memberListPayload
.
member
)
{
log
.
info
(
'
PuppetPadchatBridge
'
,
'
syncRoomMember(%s) member(%s)="%s"
'
,
roomId
,
memberPayload
.
user_name
,
JSON
.
stringify
(
memberPayload
),
)
const
contactId
=
memberPayload
.
user_name
const
contactId
=
memberPayload
.
user_name
memberDict
[
contactId
]
=
memberPayload
memberDict
[
contactId
]
=
memberPayload
}
}
...
@@ -628,10 +626,10 @@ export class Bridge extends EventEmitter {
...
@@ -628,10 +626,10 @@ export class Bridge extends EventEmitter {
throw
new
Error
(
'
no cache
'
)
throw
new
Error
(
'
no cache
'
)
}
}
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() update
%d to Contact(%d) & Room(%d) ...
'
,
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() updating
%d to Contact(%d) & Room(%d) ...
'
,
syncContactList
.
length
,
syncContactList
.
length
,
[...
this
.
cacheContactRawPayload
.
keys
()].
length
,
this
.
cacheContactRawPayload
.
size
,
[...
this
.
cacheRoomRawPayload
.
keys
()].
length
,
this
.
cacheRoomRawPayload
.
size
,
)
)
for
(
const
syncContact
of
syncContactList
)
{
for
(
const
syncContact
of
syncContactList
)
{
...
@@ -647,7 +645,7 @@ export class Bridge extends EventEmitter {
...
@@ -647,7 +645,7 @@ export class Bridge extends EventEmitter {
/**
/**
* Room
* Room
*/
*/
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() sync
Room %s(%s)
'
,
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() updating
Room %s(%s)
'
,
syncContact
.
nick_name
,
syncContact
.
nick_name
,
syncContact
.
user_name
,
syncContact
.
user_name
,
)
)
...
@@ -661,7 +659,7 @@ export class Bridge extends EventEmitter {
...
@@ -661,7 +659,7 @@ export class Bridge extends EventEmitter {
/**
/**
* Contact
* Contact
*/
*/
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() sync
Contact %s(%s)
'
,
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
syncContactsAndRooms() updating
Contact %s(%s)
'
,
syncContact
.
nick_name
,
syncContact
.
nick_name
,
syncContact
.
user_name
,
syncContact
.
user_name
,
)
)
...
@@ -693,41 +691,23 @@ export class Bridge extends EventEmitter {
...
@@ -693,41 +691,23 @@ export class Bridge extends EventEmitter {
}
}
}
}
// private async WXGetContact(id: string): Promise<PadchatContactPayload | PadchatRoomPayload> {
public
async
contactRawPayload
(
contactid
:
string
):
Promise
<
PadchatContactPayload
>
{
// const result = await this.jsonRpcCall('WXGetContact', [id])
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
contactRawPayload(%s)
'
,
contactid
)
// if (!result) {
// throw Error('PuppetPadchatBridge, WXGetContact, cannot get result from websocket server!')
// }
// log.silly('PuppetPadchatBridge', 'WXGetContact(%s) result: %s', id, JSON.stringify(result))
// if (!result.user_name) {
// log.warn('PuppetPadchatBridge', 'WXGetContact cannot get user_name, id: %s', id)
// }
// if (result.member) {
// result.member = JSON.parse(decodeURIComponent(result.member))
// }
// return result
// }
public
async
contactRawPayload
(
id
:
string
):
Promise
<
PadchatContactPayload
>
{
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
contactRawPayload(%s)
'
,
id
)
const
rawPayload
=
await
Misc
.
retry
(
async
(
retry
,
attempt
)
=>
{
const
rawPayload
=
await
Misc
.
retry
(
async
(
retry
,
attempt
)
=>
{
log
.
verbose
(
'
PuppetPadchatBridge
'
,
'
contactRawPayload(%s) retry() attempt=%d
'
,
id
,
attempt
)
log
.
silly
(
'
PuppetPadchatBridge
'
,
'
contactRawPayload(%s) retry() attempt=%d
'
,
contact
id
,
attempt
)
if
(
!
this
.
cacheContactRawPayload
)
{
if
(
!
this
.
cacheContactRawPayload
)
{
throw
new
Error
(
'
no cache
'
)
throw
new
Error
(
'
no cache
'
)
}
}
if
(
this
.
cacheContactRawPayload
.
has
(
id
))
{
if
(
this
.
cacheContactRawPayload
.
has
(
contact
id
))
{
return
this
.
cacheContactRawPayload
.
get
(
id
)
return
this
.
cacheContactRawPayload
.
get
(
contact
id
)
}
}
const
tryRawPayload
=
await
this
.
padchatRpc
.
WXGetContactPayload
(
id
)
const
tryRawPayload
=
await
this
.
padchatRpc
.
WXGetContactPayload
(
contact
id
)
if
(
tryRawPayload
)
{
if
(
tryRawPayload
)
{
this
.
cacheContactRawPayload
.
set
(
id
,
tryRawPayload
)
this
.
cacheContactRawPayload
.
set
(
contact
id
,
tryRawPayload
)
return
tryRawPayload
return
tryRawPayload
}
}
return
retry
(
new
Error
(
'
tryRawPayload empty
'
))
return
retry
(
new
Error
(
'
tryRawPayload empty
'
))
...
@@ -831,4 +811,12 @@ export class Bridge extends EventEmitter {
...
@@ -831,4 +811,12 @@ export class Bridge extends EventEmitter {
public
async
WXAddUser
(
strangerV1
:
string
,
strangerV2
:
string
,
type
:
string
,
verify
:
string
):
Promise
<
void
>
{
public
async
WXAddUser
(
strangerV1
:
string
,
strangerV2
:
string
,
type
:
string
,
verify
:
string
):
Promise
<
void
>
{
await
this
.
padchatRpc
.
WXAddUser
(
strangerV1
,
strangerV2
,
type
,
verify
)
await
this
.
padchatRpc
.
WXAddUser
(
strangerV1
,
strangerV2
,
type
,
verify
)
}
}
public
async
WXSetChatroomAnnouncement
(
chatroom
:
string
,
content
:
string
):
Promise
<
void
>
{
await
this
.
padchatRpc
.
WXSetChatroomAnnouncement
(
chatroom
,
content
)
}
public
async
WXGetChatroomAnnouncement
(
chatroom
:
string
):
Promise
<
string
>
{
return
await
this
.
padchatRpc
.
WXGetChatroomAnnouncement
(
chatroom
)
}
}
}
src/puppet-padchat/padchat-rpc.ts
浏览文件 @
8700aa23
...
@@ -259,6 +259,7 @@ export class PadchatRpc extends EventEmitter {
...
@@ -259,6 +259,7 @@ export class PadchatRpc extends EventEmitter {
if
(
padchatPayload
.
type
===
PadchatPayloadType
.
Logout
)
{
if
(
padchatPayload
.
type
===
PadchatPayloadType
.
Logout
)
{
// this.emit('logout', this.selfId())
// this.emit('logout', this.selfId())
console
.
log
(
'
onSocketPadchat:
'
,
JSON
.
stringify
(
padchatPayload
))
this
.
emit
(
'
logout
'
)
this
.
emit
(
'
logout
'
)
}
}
...
@@ -552,17 +553,36 @@ export class PadchatRpc extends EventEmitter {
...
@@ -552,17 +553,36 @@ export class PadchatRpc extends EventEmitter {
return
emptyResult
return
emptyResult
}
}
// tslint:disable-next-line:max-line-length
try
{
// change '[{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/DpS0ZssJ5s8tEpSr9JuPTRxEUrCK0USrZcR3PjOMfUKDwpnZLxWXlD4Q38bJpcXBtwXWwevsul1lJqwsQzwItQ/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"李佳芮","small_head":"http://wx.qlogo.cn/mmhead/ver_1/DpS0ZssJ5s8tEpSr9JuPTRxEUrCK0USrZcR3PjOMfUKDwpnZLxWXlD4Q38bJpcXBtwXWwevsul1lJqwsQzwItQ/132","user_name":"qq512436430"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/kcBj3gSibfFd2I9vQ8PBFyQ77cpPIfqkFlpTdkFZzBicMT6P567yj9IO6xG68WsibhqdPuG82tjXsveFATSDiaXRjw/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"梦君君","small_head":"http://wx.qlogo.cn/mmhead/ver_1/kcBj3gSibfFd2I9vQ8PBFyQ77cpPIfqkFlpTdkFZzBicMT6P567yj9IO6xG68WsibhqdPuG82tjXsveFATSDiaXRjw/132","user_name":"mengjunjun001"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/3CsKibSktDV05eReoAicV0P8yfmuHSowfXAMvRuU7HEy8wMcQ2eibcaO1ccS95PskZchEWqZibeiap6Gpb9zqJB1WmNc6EdD6nzQiblSx7dC1eGtA/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"苏轼","small_head":"http://wx.qlogo.cn/mmhead/ver_1/3CsKibSktDV05eReoAicV0P8yfmuHSowfXAMvRuU7HEy8wMcQ2eibcaO1ccS95PskZchEWqZibeiap6Gpb9zqJB1WmNc6EdD6nzQiblSx7dC1eGtA/132","user_name":"wxid_zj2cahpwzgie12"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/piaHuicak41b6ibmcEVxoWKnnhgGDG5EbaD0hibwkrRvKeDs3gs7XQrkym3Q5MlUeSKY8vw2FRVVstialggUxf2zic2O8CvaEsicSJcghf41nibA940/0","chatroom_nick_name":"","invited_by":"wxid_zj2cahpwzgie12","nick_name":"王宁","small_head":"http://wx.qlogo.cn/mmhead/ver_1/piaHuicak41b6ibmcEVxoWKnnhgGDG5EbaD0hibwkrRvKeDs3gs7XQrkym3Q5MlUeSKY8vw2FRVVstialggUxf2zic2O8CvaEsicSJcghf41nibA940/132","user_name":"wxid_7708837087612"}]'
// tslint:disable-next-line:max-line-length
// to Array (PadchatRoomRawMember[])
// change '[{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/DpS0ZssJ5s8tEpSr9JuPTRxEUrCK0USrZcR3PjOMfUKDwpnZLxWXlD4Q38bJpcXBtwXWwevsul1lJqwsQzwItQ/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"李佳芮","small_head":"http://wx.qlogo.cn/mmhead/ver_1/DpS0ZssJ5s8tEpSr9JuPTRxEUrCK0USrZcR3PjOMfUKDwpnZLxWXlD4Q38bJpcXBtwXWwevsul1lJqwsQzwItQ/132","user_name":"qq512436430"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/kcBj3gSibfFd2I9vQ8PBFyQ77cpPIfqkFlpTdkFZzBicMT6P567yj9IO6xG68WsibhqdPuG82tjXsveFATSDiaXRjw/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"梦君君","small_head":"http://wx.qlogo.cn/mmhead/ver_1/kcBj3gSibfFd2I9vQ8PBFyQ77cpPIfqkFlpTdkFZzBicMT6P567yj9IO6xG68WsibhqdPuG82tjXsveFATSDiaXRjw/132","user_name":"mengjunjun001"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/3CsKibSktDV05eReoAicV0P8yfmuHSowfXAMvRuU7HEy8wMcQ2eibcaO1ccS95PskZchEWqZibeiap6Gpb9zqJB1WmNc6EdD6nzQiblSx7dC1eGtA/0","chatroom_nick_name":"","invited_by":"wxid_7708837087612","nick_name":"苏轼","small_head":"http://wx.qlogo.cn/mmhead/ver_1/3CsKibSktDV05eReoAicV0P8yfmuHSowfXAMvRuU7HEy8wMcQ2eibcaO1ccS95PskZchEWqZibeiap6Gpb9zqJB1WmNc6EdD6nzQiblSx7dC1eGtA/132","user_name":"wxid_zj2cahpwzgie12"},{"big_head":"http://wx.qlogo.cn/mmhead/ver_1/piaHuicak41b6ibmcEVxoWKnnhgGDG5EbaD0hibwkrRvKeDs3gs7XQrkym3Q5MlUeSKY8vw2FRVVstialggUxf2zic2O8CvaEsicSJcghf41nibA940/0","chatroom_nick_name":"","invited_by":"wxid_zj2cahpwzgie12","nick_name":"王宁","small_head":"http://wx.qlogo.cn/mmhead/ver_1/piaHuicak41b6ibmcEVxoWKnnhgGDG5EbaD0hibwkrRvKeDs3gs7XQrkym3Q5MlUeSKY8vw2FRVVstialggUxf2zic2O8CvaEsicSJcghf41nibA940/132","user_name":"wxid_7708837087612"}]'
if
(
Array
.
isArray
(
JSON
.
parse
(
decodeURIComponent
(
result
.
member
))))
{
// to Array (PadchatRoomRawMember[])
result
.
member
=
JSON
.
parse
(
decodeURIComponent
(
result
.
member
))
as
PadchatRoomMemberPayload
[]
if
(
Array
.
isArray
(
JSON
.
parse
(
decodeURIComponent
(
result
.
member
))))
{
}
else
{
result
.
member
=
JSON
.
parse
(
decodeURIComponent
(
result
.
member
))
as
PadchatRoomMemberPayload
[]
log
.
warn
(
'
PadchatRpc
'
,
'
WXGetChatRoomMember(%s) member is not array: %s
'
,
roomId
,
JSON
.
stringify
(
result
.
member
))
}
else
{
// throw Error('faild to parse chatroom member!')
log
.
warn
(
'
PadchatRpc
'
,
'
WXGetChatRoomMember(%s) member is not array: %s
'
,
roomId
,
JSON
.
stringify
(
result
.
member
))
// throw Error('faild to parse chatroom member!')
result
.
member
=
[]
}
}
catch
(
e
)
{
// 18:27:54 SILL Puppet contactPayload(shanzhifeng644634) cache MISS
// tslint:disable-next-line:max-line-length
// 18:27:55 SILL PadchatRpc WXGetChatRoomMember() result: {"chatroom_id":700002836,"count":442,"member":"[{\"big_head\":\"http://wx.qlogo.cn/mmhead/ver_1/VCnC8c3icQpcsCpMeSq1w2MZm6Q3ZNqHINoOUhUic9icB3Tm6BK9hyyB9XiaFxjVNIHF0oO11zZTez0nictu2nRWLH7OaKcRkZQdiaz0UjjYlBeWk/0\",\"chatroom_nick_name\":\"宁杰+野生土蜂蜜\",\"invited_by\":\"\",\"nick_name\":\"宁杰¥野生土蜂蜜\",\"small_head\":\"http://wx.qlogo.cn/mmhead/ver_1/VCnC8c3icQpcsCpMeSq1w2MZm6Q3ZNqHINoOUhUic9icB3Tm6BK9hyyB9XiaFxjVNIHF0oO11zZTez0nictu2nRWLH7OaKcRkZQdiaz0UjjYlBeWk/132\",\"user_name\":\"jack_85802\"},{\"b
// 18:27:55 ERR Config ###########################
// 18:27:55 ERR Config unhandledRejection: URIError: URI malformed [object Promise]
// 18:27:55 ERR Config ###########################
// 18:27:55 ERR Config process.on(unhandledRejection) promise.catch(URI malformed)
// Config URIError: URI malformed
// at decodeURIComponent (<anonymous>)
// at PadchatRpc.<anonymous> (/home/zixia/chatie/wechaty/src/puppet-padchat/padchat-rpc.ts:559:34)
// at Generator.next (<anonymous>)
// at fulfilled (/home/zixia/chatie/wechaty/src/puppet-padchat/padchat-rpc.ts:4:58)
// at process._tickCallback (internal/process/next_tick.js:68:7)
// (node:22232) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 834)
console
.
error
(
e
)
log
.
warn
(
'
PadchatRpc
'
,
'
WXGetChatRoomMember(%s) result.member decode error: %s
'
,
roomId
,
e
)
result
.
member
=
[]
result
.
member
=
[]
}
}
return
result
return
result
}
}
...
@@ -1337,4 +1357,16 @@ export class PadchatRpc extends EventEmitter {
...
@@ -1337,4 +1357,16 @@ export class PadchatRpc extends EventEmitter {
}
}
return
result
return
result
}
}
// FIXME: does Get exist?
// FIXME2: what's the structure of result? result.data???
public
async
WXGetChatroomAnnouncement
(
chatroom
:
string
):
Promise
<
string
>
{
const
result
=
await
this
.
rpcCall
(
'
WXGetChatroomAnnouncement
'
,
chatroom
)
log
.
silly
(
'
PadchatRpc
'
,
'
WXGetChatroomAnnouncement ,result: %s
'
,
JSON
.
stringify
(
result
))
if
(
!
result
||
result
.
status
!==
0
)
{
throw
Error
(
'
WXGetChatroomAnnouncement , error! canot get result from websocket server
'
)
}
return
result
.
data
}
}
}
src/puppet-padchat/padchat-schemas.ts
浏览文件 @
8700aa23
...
@@ -27,6 +27,7 @@ export enum PadchatContactRoomStatus {
...
@@ -27,6 +27,7 @@ export enum PadchatContactRoomStatus {
}
}
export
enum
PadchatRoomMemberStatus
{
export
enum
PadchatRoomMemberStatus
{
Zero
=
0
,
Todo
,
Todo
,
}
}
...
...
src/puppet-padchat/puppet-padchat.ts
浏览文件 @
8700aa23
...
@@ -74,6 +74,7 @@ import {
...
@@ -74,6 +74,7 @@ import {
PadchatRoomPayload
,
PadchatRoomPayload
,
// PadchatRoomMemberListPayload,
// PadchatRoomMemberListPayload,
PadchatRoomMemberPayload
,
PadchatRoomMemberPayload
,
PadchatMessageType
,
// PadchatMessageType,
// PadchatMessageType,
// PadchatContinue,
// PadchatContinue,
...
@@ -89,7 +90,7 @@ export type ScanFoodType = 'scan' | 'login' | 'logout'
...
@@ -89,7 +90,7 @@ export type ScanFoodType = 'scan' | 'login' | 'logout'
export
class
PuppetPadchat
extends
Puppet
{
export
class
PuppetPadchat
extends
Puppet
{
// private readonly cachePadchatContactPayload : LRU.Cache<string, PadchatContactRawPayload>
// private readonly cachePadchatContactPayload : LRU.Cache<string, PadchatContactRawPayload>
// private readonly cachePadchatFriendRequestRawPayload : LRU.Cache<string, FriendRequestRaw
Payload>
private
readonly
cachePadchatFriendRequestPayload
:
LRU
.
Cache
<
string
,
PadchatMessage
Payload
>
private
readonly
cachePadchatMessagePayload
:
LRU
.
Cache
<
string
,
PadchatMessagePayload
>
private
readonly
cachePadchatMessagePayload
:
LRU
.
Cache
<
string
,
PadchatMessagePayload
>
// private readonly cachePadchatRoomPayload : LRU.Cache<string, PadchatRoomRawPayload>
// private readonly cachePadchatRoomPayload : LRU.Cache<string, PadchatRoomRawPayload>
...
@@ -110,7 +111,7 @@ export class PuppetPadchat extends Puppet {
...
@@ -110,7 +111,7 @@ export class PuppetPadchat extends Puppet {
}
}
// this.cachePadchatContactPayload = new LRU<string, PadchatContactRawPayload>(lruOptions)
// this.cachePadchatContactPayload = new LRU<string, PadchatContactRawPayload>(lruOptions)
// this.cacheFriendRequestPayload = new LRU<string, FriendRequest
Payload>(lruOptions)
this
.
cachePadchatFriendRequestPayload
=
new
LRU
<
string
,
PadchatMessage
Payload
>
(
lruOptions
)
this
.
cachePadchatMessagePayload
=
new
LRU
<
string
,
PadchatMessagePayload
>
(
lruOptions
)
this
.
cachePadchatMessagePayload
=
new
LRU
<
string
,
PadchatMessagePayload
>
(
lruOptions
)
// this.cachePadchatRoomPayload = new LRU<string, PadchatRoomRawPayload>(lruOptions)
// this.cachePadchatRoomPayload = new LRU<string, PadchatRoomRawPayload>(lruOptions)
...
@@ -218,13 +219,8 @@ export class PuppetPadchat extends Puppet {
...
@@ -218,13 +219,8 @@ export class PuppetPadchat extends Puppet {
this
.
bridge
.
on
(
'
logout
'
,
()
=>
{
this
.
bridge
.
on
(
'
logout
'
,
()
=>
{
this
.
logout
()
this
.
logout
()
})
})
this
.
bridge
.
on
(
'
message
'
,
(
messagePayload
:
PadchatMessagePayload
)
=>
{
this
.
bridge
.
on
(
'
message
'
,
(
rawPayload
:
PadchatMessagePayload
)
=>
{
log
.
silly
(
'
PuppetPadchat
'
,
'
startBridge() bridge.on(message)
'
)
this
.
onPadchatMessage
(
rawPayload
)
this
.
cachePadchatMessagePayload
.
set
(
messagePayload
.
msg_id
,
messagePayload
,
)
this
.
emit
(
'
message
'
,
messagePayload
.
msg_id
)
})
})
this
.
bridge
.
on
(
'
scan
'
,
(
qrCode
:
string
,
status
:
number
,
data
?:
string
)
=>
{
this
.
bridge
.
on
(
'
scan
'
,
(
qrCode
:
string
,
status
:
number
,
data
?:
string
)
=>
{
this
.
emit
(
'
scan
'
,
qrCode
,
status
,
data
)
this
.
emit
(
'
scan
'
,
qrCode
,
status
,
data
)
...
@@ -233,6 +229,28 @@ export class PuppetPadchat extends Puppet {
...
@@ -233,6 +229,28 @@ export class PuppetPadchat extends Puppet {
await
this
.
bridge
.
start
()
await
this
.
bridge
.
start
()
}
}
protected
onPadchatMessage
(
rawPayload
:
PadchatMessagePayload
)
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
onPadchatMessage({id=%s, type=%s(%s)})
'
,
rawPayload
.
msg_id
,
PadchatMessageType
[
rawPayload
.
sub_type
],
rawPayload
.
msg_type
,
)
switch
(
rawPayload
.
sub_type
)
{
case
PadchatMessageType
.
VerifyMsg
:
this
.
cachePadchatFriendRequestPayload
.
set
(
rawPayload
.
msg_id
,
rawPayload
)
this
.
emit
(
'
friend
'
,
rawPayload
.
msg_id
)
break
default
:
this
.
cachePadchatMessagePayload
.
set
(
rawPayload
.
msg_id
,
rawPayload
,
)
this
.
emit
(
'
message
'
,
rawPayload
.
msg_id
)
break
}
}
public
async
stop
():
Promise
<
void
>
{
public
async
stop
():
Promise
<
void
>
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
quit()
'
)
log
.
verbose
(
'
PuppetPadchat
'
,
'
quit()
'
)
...
@@ -311,14 +329,14 @@ export class PuppetPadchat extends Puppet {
...
@@ -311,14 +329,14 @@ export class PuppetPadchat extends Puppet {
}
}
public
async
contactRawPayload
(
contactId
:
string
):
Promise
<
PadchatContactPayload
>
{
public
async
contactRawPayload
(
contactId
:
string
):
Promise
<
PadchatContactPayload
>
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
contactRawPayload(%s)
'
,
contactId
)
log
.
silly
(
'
PuppetPadchat
'
,
'
contactRawPayload(%s)
'
,
contactId
)
const
rawPayload
=
await
this
.
bridge
.
contactRawPayload
(
contactId
)
const
rawPayload
=
await
this
.
bridge
.
contactRawPayload
(
contactId
)
return
rawPayload
return
rawPayload
}
}
public
async
contactRawPayloadParser
(
rawPayload
:
PadchatContactPayload
):
Promise
<
ContactPayload
>
{
public
async
contactRawPayloadParser
(
rawPayload
:
PadchatContactPayload
):
Promise
<
ContactPayload
>
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
contactRawPayloadParser(rawPayload.user_name="%s"
)
'
,
rawPayload
.
user_name
)
log
.
silly
(
'
PuppetPadchat
'
,
'
contactRawPayloadParser({user_name="%s"}
)
'
,
rawPayload
.
user_name
)
const
payload
:
ContactPayload
=
pfHelper
.
contactRawPayloadParser
(
rawPayload
)
const
payload
:
ContactPayload
=
pfHelper
.
contactRawPayloadParser
(
rawPayload
)
return
payload
return
payload
...
@@ -562,6 +580,18 @@ export class PuppetPadchat extends Puppet {
...
@@ -562,6 +580,18 @@ export class PuppetPadchat extends Puppet {
await
this
.
bridge
.
WXQuitChatRoom
(
roomId
)
await
this
.
bridge
.
WXQuitChatRoom
(
roomId
)
}
}
public
async
roomAnnounce
(
roomId
:
string
)
:
Promise
<
string
>
public
async
roomAnnounce
(
roomId
:
string
,
text
:
string
)
:
Promise
<
void
>
public
async
roomAnnounce
(
roomId
:
string
,
text
?:
string
):
Promise
<
void
|
string
>
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
roomAnnounce(%s, %s)
'
,
roomId
,
text
?
text
:
''
)
if
(
text
)
{
await
this
.
bridge
.
WXSetChatroomAnnouncement
(
roomId
,
text
)
}
else
{
return
await
this
.
bridge
.
WXGetChatroomAnnouncement
(
roomId
)
}
}
/**
/**
*
*
* FriendRequest
* FriendRequest
...
@@ -615,23 +645,22 @@ export class PuppetPadchat extends Puppet {
...
@@ -615,23 +645,22 @@ export class PuppetPadchat extends Puppet {
// )
// )
}
}
public
async
friendRequestRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
FriendRequestPayload
>
{
public
async
friendRequestRawPayloadParser
(
rawPayload
:
PadchatMessagePayload
)
:
Promise
<
FriendRequestPayload
>
{
log
.
verbose
(
'
PuppetPadchat
'
,
'
friendRequestRawPayloadParser(%s)
'
,
rawPayload
)
log
.
verbose
(
'
PuppetPadchat
'
,
'
friendRequestRawPayloadParser(%s)
'
,
rawPayload
)
const
payload
:
FriendRequestPayload
=
pfHelper
.
friendRequestRawPayloadParser
(
rawPayload
)
const
payload
:
FriendRequestPayload
=
pfHelper
.
friendRequestRawPayloadParser
(
rawPayload
)
return
payload
return
payload
}
}
public
async
friendRequestRawPayload
(
id
:
string
):
Promise
<
any
>
{
public
async
friendRequestRawPayload
(
friendRequestId
:
string
):
Promise
<
PadchatMessagePayload
>
{
// log.verbose('PuppetPadchat', 'friendRequestRawPayload(%s)', i
d)
log
.
verbose
(
'
PuppetPadchat
'
,
'
friendRequestRawPayload(%s)
'
,
friendRequestI
d
)
throw
new
Error
(
'
todo:
'
+
id
)
const
rawPayload
=
this
.
cachePadchatFriendRequestPayload
.
get
(
friendRequestId
)
// const rawPayload = this.cacheMessageRawPayload.get(id)
if
(
!
rawPayload
)
{
// if (!rawPayload) {
throw
new
Error
(
'
no rawPayload
'
)
// throw new Error('no rawPayload')
}
// }
//
return rawPayload
return
rawPayload
}
}
}
}
...
...
src/puppet-padchat/pure-function-helper.ts
浏览文件 @
8700aa23
...
@@ -135,7 +135,7 @@ export class PadchatPureFunctionHelper {
...
@@ -135,7 +135,7 @@ export class PadchatPureFunctionHelper {
rawPayload
:
PadchatMessagePayload
,
rawPayload
:
PadchatMessagePayload
,
):
MessagePayload
{
):
MessagePayload
{
console
.
log
(
rawPayload
)
//
console.log(rawPayload)
let
type
:
MessageType
let
type
:
MessageType
...
@@ -189,10 +189,11 @@ export class PadchatPureFunctionHelper {
...
@@ -189,10 +189,11 @@ export class PadchatPureFunctionHelper {
// Msg from room
// Msg from room
if
(
this
.
isRoomId
(
rawPayload
.
from_user
))
{
if
(
this
.
isRoomId
(
rawPayload
.
from_user
))
{
const
parts
=
rawPayload
.
content
.
split
(
'
:
\n
'
)
// update fromId to actual sender instead of the room
// update fromId to actual sender instead of the room
payloadBase
.
fromId
=
rawPayload
.
content
.
split
(
'
:
\n
'
)
[
0
]
payloadBase
.
fromId
=
parts
[
0
]
// update the text to actual text of the message
// update the text to actual text of the message
payloadBase
.
text
=
rawPayload
.
content
.
split
(
'
:
\n
'
)
[
1
]
payloadBase
.
text
=
parts
[
1
]
roomId
=
rawPayload
.
from_user
roomId
=
rawPayload
.
from_user
...
@@ -236,39 +237,22 @@ export class PadchatPureFunctionHelper {
...
@@ -236,39 +237,22 @@ export class PadchatPureFunctionHelper {
public
static
roomRawPayloadParser
(
public
static
roomRawPayloadParser
(
rawPayload
:
PadchatRoomPayload
,
rawPayload
:
PadchatRoomPayload
,
// roomRawMemberList : PadchatRoomMember[],
):
RoomPayload
{
):
RoomPayload
{
// const aliasDict = {} as { [id: string]: string | undefined }
// if (Array.isArray(roomRawMemberList)) {
// roomRawMemberList.forEach(
// rawMember => {
// aliasDict[rawMember.user_name] = rawMember.chatroom_nick_name
// },
// )
// }
// const memberIdList = roomRawMemberList.map(m => m.user_name)
const
payload
:
RoomPayload
=
{
const
payload
:
RoomPayload
=
{
id
:
rawPayload
.
user_name
,
id
:
rawPayload
.
user_name
,
topic
:
rawPayload
.
nick_name
,
topic
:
rawPayload
.
nick_name
,
ownerId
:
rawPayload
.
chatroom_owner
,
ownerId
:
rawPayload
.
chatroom_owner
,
// memberIdList,
// aliasDict,
}
}
return
payload
return
payload
}
}
public
static
friendRequestRawPayloadParser
(
public
static
friendRequestRawPayloadParser
(
rawPayload
:
any
,
rawPayload
:
PadchatMessagePayload
,
)
:
FriendRequestPayload
{
)
:
FriendRequestPayload
{
// to do:
throw
new
Error
(
'
to do
'
+
rawPayload
)
throw
new
Error
(
'
todo
'
+
rawPayload
)
// switch (rawPayload.sub_type) {
// case PadchatMessageType.VerifyMsg:
// switch (rawPayload.MsgType) {
// case WebMessageType.VERIFYMSG:
// if (!rawPayload.RecommendInfo) {
// if (!rawPayload.RecommendInfo) {
// throw new Error('no RecommendInfo')
// throw new Error('no RecommendInfo')
// }
// }
...
@@ -287,7 +271,7 @@ export class PadchatPureFunctionHelper {
...
@@ -287,7 +271,7 @@ export class PadchatPureFunctionHelper {
// }
// }
// return payloadReceive
// return payloadReceive
// case
WebMessageType.SYS
:
// case
PadchatMessageType.Sys
:
// const payloadConfirm: FriendRequestPayloadConfirm = {
// const payloadConfirm: FriendRequestPayloadConfirm = {
// id : rawPayload.MsgId,
// id : rawPayload.MsgId,
// contactId : rawPayload.FromUserName,
// contactId : rawPayload.FromUserName,
...
@@ -298,7 +282,6 @@ export class PadchatPureFunctionHelper {
...
@@ -298,7 +282,6 @@ export class PadchatPureFunctionHelper {
// default:
// default:
// throw new Error('not supported friend request message raw payload')
// throw new Error('not supported friend request message raw payload')
// }
// }
}
}
public
static
async
imageBase64ToQrCode
(
base64
:
string
):
Promise
<
string
>
{
public
static
async
imageBase64ToQrCode
(
base64
:
string
):
Promise
<
string
>
{
...
...
src/puppet/puppet.ts
浏览文件 @
8700aa23
...
@@ -354,7 +354,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -354,7 +354,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
*/
*/
public
abstract
async
contactAlias
(
contactId
:
string
)
:
Promise
<
string
>
public
abstract
async
contactAlias
(
contactId
:
string
)
:
Promise
<
string
>
public
abstract
async
contactAlias
(
contactId
:
string
,
alias
:
string
|
null
)
:
Promise
<
void
>
public
abstract
async
contactAlias
(
contactId
:
string
,
alias
:
string
|
null
)
:
Promise
<
void
>
public
abstract
async
contactAlias
(
contactId
:
string
,
alias
?:
string
|
null
)
:
Promise
<
string
|
void
>
//
public abstract async contactAlias(contactId: string, alias?: string|null) : Promise<string | void>
public
abstract
async
contactAvatar
(
contactId
:
string
)
:
Promise
<
FileBox
>
public
abstract
async
contactAvatar
(
contactId
:
string
)
:
Promise
<
FileBox
>
public
abstract
async
contactList
()
:
Promise
<
string
[]
>
public
abstract
async
contactList
()
:
Promise
<
string
[]
>
...
@@ -464,7 +464,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -464,7 +464,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
}
}
if
(
noCache
)
{
if
(
noCache
)
{
log
.
silly
(
'
Puppet
'
,
'
contactPayload(
) cache PURGE
'
)
log
.
silly
(
'
Puppet
'
,
'
contactPayload(
%s) cache PURGE
'
,
contactId
)
this
.
cacheContactPayload
.
del
(
contactId
)
this
.
cacheContactPayload
.
del
(
contactId
)
...
@@ -484,7 +484,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -484,7 +484,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
payload
=
await
this
.
contactRawPayloadParser
(
rawPayload
)
const
payload
=
await
this
.
contactRawPayloadParser
(
rawPayload
)
this
.
cacheContactPayload
.
set
(
contactId
,
payload
)
this
.
cacheContactPayload
.
set
(
contactId
,
payload
)
log
.
silly
(
'
Puppet
'
,
'
contactPayload(
) cache SET
'
)
log
.
silly
(
'
Puppet
'
,
'
contactPayload(
%s) cache SET
'
,
contactId
)
return
payload
return
payload
}
}
...
@@ -527,7 +527,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -527,7 +527,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
}
}
if
(
noCache
)
{
if
(
noCache
)
{
log
.
silly
(
'
Puppet
'
,
'
friendRequestPayload(
) cache PURGE
'
)
log
.
silly
(
'
Puppet
'
,
'
friendRequestPayload(
%s) cache PURGE
'
,
friendRequestId
)
this
.
cacheFriendRequestPayload
.
del
(
friendRequestId
)
this
.
cacheFriendRequestPayload
.
del
(
friendRequestId
)
...
@@ -590,7 +590,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -590,7 +590,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
}
}
if
(
noCache
)
{
if
(
noCache
)
{
log
.
silly
(
'
Puppet
'
,
'
messagePayload(
) cache PURGE
'
)
log
.
silly
(
'
Puppet
'
,
'
messagePayload(
%s) cache PURGE
'
,
messageId
)
this
.
cacheMessagePayload
.
del
(
messageId
)
this
.
cacheMessagePayload
.
del
(
messageId
)
...
@@ -610,7 +610,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -610,7 +610,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
payload
=
await
this
.
messageRawPayloadParser
(
rawPayload
)
const
payload
=
await
this
.
messageRawPayloadParser
(
rawPayload
)
this
.
cacheMessagePayload
.
set
(
messageId
,
payload
)
this
.
cacheMessagePayload
.
set
(
messageId
,
payload
)
log
.
silly
(
'
Puppet
'
,
'
messagePayload(
) cache SET
'
)
log
.
silly
(
'
Puppet
'
,
'
messagePayload(
%s) cache SET
'
,
messageId
)
return
payload
return
payload
}
}
...
@@ -639,6 +639,9 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -639,6 +639,9 @@ export abstract class Puppet extends EventEmitter implements Sayable {
public
abstract
async
roomMemberRawPayload
(
roomId
:
string
,
contactId
:
string
)
:
Promise
<
any
>
public
abstract
async
roomMemberRawPayload
(
roomId
:
string
,
contactId
:
string
)
:
Promise
<
any
>
public
abstract
async
roomMemberRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
RoomMemberPayload
>
public
abstract
async
roomMemberRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
RoomMemberPayload
>
public
abstract
async
roomAnnounce
(
roomId
:
string
)
:
Promise
<
string
>
public
abstract
async
roomAnnounce
(
roomId
:
string
,
text
:
string
)
:
Promise
<
void
>
public
async
roomMemberSearch
(
public
async
roomMemberSearch
(
roomId
:
string
,
roomId
:
string
,
query
:
string
|
RoomMemberQueryFilter
,
query
:
string
|
RoomMemberQueryFilter
,
...
@@ -790,7 +793,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -790,7 +793,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
}
}
if
(
noCache
)
{
if
(
noCache
)
{
log
.
silly
(
'
Puppet
'
,
'
roomPayload(
) cache PURGE
'
)
log
.
silly
(
'
Puppet
'
,
'
roomPayload(
%s) cache PURGE
'
,
roomId
)
this
.
cacheRoomPayload
.
del
(
roomId
)
this
.
cacheRoomPayload
.
del
(
roomId
)
...
@@ -810,7 +813,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -810,7 +813,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
payload
=
await
this
.
roomRawPayloadParser
(
rawPayload
)
const
payload
=
await
this
.
roomRawPayloadParser
(
rawPayload
)
this
.
cacheRoomPayload
.
set
(
roomId
,
payload
)
this
.
cacheRoomPayload
.
set
(
roomId
,
payload
)
log
.
silly
(
'
Puppet
'
,
'
roomPayload(
) cache SET
'
)
log
.
silly
(
'
Puppet
'
,
'
roomPayload(
%s) cache SET
'
,
roomId
)
return
payload
return
payload
}
}
...
@@ -833,9 +836,9 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -833,9 +836,9 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
cachedPayload
=
this
.
cacheRoomMemberPayload
.
get
(
cacheKey
)
const
cachedPayload
=
this
.
cacheRoomMemberPayload
.
get
(
cacheKey
)
if
(
cachedPayload
)
{
if
(
cachedPayload
)
{
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayloadCache(
) cache HIT
'
)
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayloadCache(
%s) cache HIT
'
,
roomId
)
}
else
{
}
else
{
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayloadCache(
) cache MISS
'
)
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayloadCache(
%s) cache MISS
'
,
roomId
)
}
}
return
cachedPayload
return
cachedPayload
...
@@ -855,7 +858,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -855,7 +858,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
cacheKey
=
this
.
cacheKeyRoomMember
(
roomId
,
contactId
)
const
cacheKey
=
this
.
cacheKeyRoomMember
(
roomId
,
contactId
)
if
(
noCache
)
{
if
(
noCache
)
{
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayload(
) cache PURGE
'
)
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayload(
%s) cache PURGE
'
,
roomId
)
this
.
cacheRoomMemberPayload
.
del
(
cacheKey
)
this
.
cacheRoomMemberPayload
.
del
(
cacheKey
)
...
@@ -874,7 +877,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
...
@@ -874,7 +877,7 @@ export abstract class Puppet extends EventEmitter implements Sayable {
const
payload
=
await
this
.
roomMemberRawPayloadParser
(
rawPayload
)
const
payload
=
await
this
.
roomMemberRawPayloadParser
(
rawPayload
)
this
.
cacheRoomMemberPayload
.
set
(
cacheKey
,
payload
)
this
.
cacheRoomMemberPayload
.
set
(
cacheKey
,
payload
)
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayload(
) cache SET
'
)
log
.
silly
(
'
Puppet
'
,
'
roomMemberPayload(
%s) cache SET
'
,
roomId
)
return
payload
return
payload
}
}
...
...
src/room.ts
浏览文件 @
8700aa23
...
@@ -538,6 +538,25 @@ export class Room extends Accessory implements Sayable {
...
@@ -538,6 +538,25 @@ export class Room extends Accessory implements Sayable {
return
future
return
future
}
}
public
async
announce
()
:
Promise
<
string
>
public
async
announce
(
text
:
string
)
:
Promise
<
void
>
public
async
announce
(
text
?:
string
):
Promise
<
void
|
string
>
{
log
.
verbose
(
'
Room
'
,
'
announce(%s)
'
,
text
?
text
:
''
)
if
(
text
)
{
await
this
.
puppet
.
roomAnnounce
(
this
.
id
,
text
)
}
else
{
return
await
this
.
puppet
.
roomAnnounce
(
this
.
id
)
}
}
// TODO
public
async
qrcode
():
Promise
<
string
>
{
log
.
verbose
(
'
Room
'
,
'
qrcode()
'
)
return
'
qrcode url for entry room
'
}
/**
/**
* Return contact's roomAlias in the room, the same as roomAlias
* Return contact's roomAlias in the room, the same as roomAlias
* @param {Contact} contact
* @param {Contact} contact
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录