Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.Veneno.
wechaty
提交
860e85ec
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,发现更多精彩内容 >>
提交
860e85ec
编写于
6月 02, 2018
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Copy/Paste from Wechaty4u run-core.js (#69)
上级
0d89e41a
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
770 addition
and
142 deletion
+770
-142
src/puppet-config.ts
src/puppet-config.ts
+2
-2
src/puppet-mock/puppet-mock.ts
src/puppet-mock/puppet-mock.ts
+9
-0
src/puppet-puppeteer/event.ts
src/puppet-puppeteer/event.ts
+2
-1
src/puppet-puppeteer/firer.ts
src/puppet-puppeteer/firer.ts
+49
-49
src/puppet-puppeteer/puppet-puppeteer.ts
src/puppet-puppeteer/puppet-puppeteer.ts
+52
-1
src/puppet-wechat4u/README.md
src/puppet-wechat4u/README.md
+19
-0
src/puppet-wechat4u/index.ts
src/puppet-wechat4u/index.ts
+3
-3
src/puppet-wechat4u/puppet-wechat4u.ts
src/puppet-wechat4u/puppet-wechat4u.ts
+616
-83
src/puppet/puppet.spec.ts
src/puppet/puppet.spec.ts
+4
-1
src/puppet/puppet.ts
src/puppet/puppet.ts
+14
-2
未找到文件。
src/puppet-config.ts
浏览文件 @
860e85ec
import
{
PuppetPuppeteer
}
from
'
./puppet-puppeteer/
'
import
{
PuppetMock
}
from
'
./puppet-mock/
'
// import { PuppetPadchat } from './puppet-padchat'
//
import PuppetWechat4u from './puppet-wechat4u/'
import
PuppetWechat4u
from
'
./puppet-wechat4u/
'
/**
* Wechaty Official Puppet Plugins List
...
...
@@ -10,7 +10,7 @@ export const PUPPET_DICT = {
mock
:
PuppetMock
,
puppeteer
:
PuppetPuppeteer
,
// padchat: PuppetPadchat,
//
wechat4u: PuppetWechat4u,
wechat4u
:
PuppetWechat4u
,
}
export
type
PuppetName
=
keyof
typeof
PUPPET_DICT
...
...
src/puppet-mock/puppet-mock.ts
浏览文件 @
860e85ec
...
...
@@ -30,6 +30,8 @@ import {
ContactType
,
ContactPayload
,
FriendRequestPayload
,
RoomPayload
,
// RoomQueryFilter,
}
from
'
../puppet/
'
...
...
@@ -319,6 +321,13 @@ export class PuppetMock extends Puppet {
* FriendRequest
*
*/
public
async
friendRequestRawPayload
(
id
:
string
)
:
Promise
<
any
>
{
return
{
id
}
as
any
}
public
async
friendRequestRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
FriendRequestPayload
>
{
return
rawPayload
}
public
async
friendRequestSend
(
contactId
:
string
,
hello
:
string
,
...
...
src/puppet-puppeteer/event.ts
浏览文件 @
860e85ec
...
...
@@ -195,7 +195,8 @@ async function onMessage(
switch
(
rawPayload
.
MsgType
)
{
case
WebMessageType
.
VERIFYMSG
:
firer
.
checkFriendRequest
(
rawPayload
)
this
.
emit
(
'
friend
'
,
rawPayload
.
MsgId
)
// firer.checkFriendRequest(rawPayload)
break
case
WebMessageType
.
SYS
:
...
...
src/puppet-puppeteer/firer.ts
浏览文件 @
860e85ec
...
...
@@ -19,24 +19,24 @@
/* tslint:disable:no-var-requires */
// const retryPromise = require('retry-promise').default
import
*
as
cuid
from
'
cuid
'
//
import * as cuid from 'cuid'
import
{
log
,
}
from
'
../config
'
import
{
WebRecomendInfo
,
//
WebRecomendInfo,
WebMessageRawPayload
,
}
from
'
./web-schemas
'
import
PuppetPuppeteer
from
'
./puppet-puppeteer
'
import
{
// FriendRequestPayload,
FriendRequestType
,
FriendRequestPayloadReceive
,
FriendRequestPayloadConfirm
,
}
from
'
../puppet/
'
//
import {
//
// FriendRequestPayload,
//
FriendRequestType,
//
FriendRequestPayloadReceive,
//
FriendRequestPayloadConfirm,
//
} from '../puppet/'
const
REGEX_CONFIG
=
{
friendConfirm
:
[
...
...
@@ -101,37 +101,37 @@ export class Firer {
//
}
public
async
checkFriendRequest
(
rawPayload
:
WebMessageRawPayload
,
):
Promise
<
void
>
{
if
(
!
rawPayload
.
RecommendInfo
)
{
throw
new
Error
(
'
no RecommendInfo
'
)
}
const
recommendInfo
:
WebRecomendInfo
=
rawPayload
.
RecommendInfo
log
.
verbose
(
'
PuppetPuppeteerFirer
'
,
'
fireFriendRequest(%s)
'
,
recommendInfo
)
if
(
!
recommendInfo
)
{
throw
new
Error
(
'
no recommendInfo
'
)
}
const
contactId
=
recommendInfo
.
UserName
const
hello
=
recommendInfo
.
Content
const
ticket
=
recommendInfo
.
Ticket
const
type
=
FriendRequestType
.
Receive
const
id
=
cuid
()
const
payloadReceive
:
FriendRequestPayloadReceive
=
{
id
,
contactId
,
hello
,
ticket
,
type
,
}
this
.
puppet
.
cacheFriendRequestPayload
.
set
(
id
,
payloadReceive
)
this
.
puppet
.
emit
(
'
friend
'
,
id
)
}
//
public async checkFriendRequest(
//
rawPayload : WebMessageRawPayload,
//
): Promise<void> {
//
if (!rawPayload.RecommendInfo) {
//
throw new Error('no RecommendInfo')
//
}
//
const recommendInfo: WebRecomendInfo = rawPayload.RecommendInfo
//
log.verbose('PuppetPuppeteerFirer', 'fireFriendRequest(%s)', recommendInfo)
//
if (!recommendInfo) {
//
throw new Error('no recommendInfo')
//
}
//
const contactId = recommendInfo.UserName
//
const hello = recommendInfo.Content
//
const ticket = recommendInfo.Ticket
//
const type = FriendRequestType.Receive
//
const id = cuid()
//
const payloadReceive: FriendRequestPayloadReceive = {
//
id,
//
contactId,
//
hello,
//
ticket,
//
type,
//
}
//
this.puppet.cacheFriendRequestPayload.set(id, payloadReceive)
//
this.puppet.emit('friend', id)
//
}
public
async
checkFriendConfirm
(
rawPayload
:
WebMessageRawPayload
,
...
...
@@ -143,20 +143,20 @@ export class Firer {
return
}
const
contactId
=
rawPayload
.
FromUserName
const
type
=
FriendRequestType
.
Confirm
//
const contactId = rawPayload.FromUserName
//
const type = FriendRequestType.Confirm
const
id
=
cuid
()
//
const id = cuid()
const
payloadConfirm
:
FriendRequestPayloadConfirm
=
{
id
,
contactId
,
type
,
}
//
const payloadConfirm: FriendRequestPayloadConfirm = {
//
id,
//
contactId,
//
type,
//
}
this
.
puppet
.
cacheFriendRequestPayload
.
set
(
id
,
payloadConfirm
)
//
this.puppet.cacheFriendRequestPayload.set(id, payloadConfirm)
this
.
puppet
.
emit
(
'
friend
'
,
i
d
)
this
.
puppet
.
emit
(
'
friend
'
,
rawPayload
.
MsgI
d
)
}
public
async
checkRoomJoin
(
...
...
src/puppet-puppeteer/puppet-puppeteer.ts
浏览文件 @
860e85ec
...
...
@@ -62,6 +62,7 @@ import {
WebMessageRawPayload
,
WebMediaType
,
WebMessageType
,
WebRecomendInfo
,
// WebRoomRawMember,
WebRoomRawPayload
,
}
from
'
./web-schemas
'
...
...
@@ -71,6 +72,11 @@ import {
// ContactQueryFilter,
ContactType
,
FriendRequestPayload
,
FriendRequestPayloadReceive
,
FriendRequestPayloadConfirm
,
FriendRequestType
,
MessagePayload
,
MessageType
,
...
...
@@ -1110,6 +1116,51 @@ export class PuppetPuppeteer extends Puppet {
* FriendRequest
*
*/
public
async
friendRequestRawPayload
(
id
:
string
):
Promise
<
WebMessageRawPayload
>
{
log
.
warn
(
'
PuppetPuppeteer
'
,
'
friendRequestRawPayload(%s)
'
,
id
)
const
rawPayload
=
await
this
.
bridge
.
getMessage
(
id
)
if
(
!
rawPayload
)
{
throw
new
Error
(
'
no rawPayload
'
)
}
return
rawPayload
}
public
async
friendRequestRawPayloadParser
(
rawPayload
:
WebMessageRawPayload
):
Promise
<
FriendRequestPayload
>
{
log
.
warn
(
'
PuppetPuppeteer
'
,
'
friendRequestRawPayloadParser(%s)
'
,
rawPayload
)
switch
(
rawPayload
.
MsgType
)
{
case
WebMessageType
.
VERIFYMSG
:
if
(
!
rawPayload
.
RecommendInfo
)
{
throw
new
Error
(
'
no RecommendInfo
'
)
}
const
recommendInfo
:
WebRecomendInfo
=
rawPayload
.
RecommendInfo
if
(
!
recommendInfo
)
{
throw
new
Error
(
'
no recommendInfo
'
)
}
const
payloadReceive
:
FriendRequestPayloadReceive
=
{
id
:
rawPayload
.
MsgId
,
contactId
:
recommendInfo
.
UserName
,
hello
:
recommendInfo
.
Content
,
ticket
:
recommendInfo
.
Ticket
,
type
:
FriendRequestType
.
Receive
,
}
return
payloadReceive
case
WebMessageType
.
SYS
:
const
payloadConfirm
:
FriendRequestPayloadConfirm
=
{
id
:
rawPayload
.
MsgId
,
contactId
:
rawPayload
.
FromUserName
,
type
:
FriendRequestType
.
Confirm
,
}
return
payloadConfirm
default
:
throw
new
Error
(
'
not supported friend request message raw payload
'
)
}
}
public
async
friendRequestSend
(
contactId
:
string
,
hello
:
string
,
...
...
@@ -1306,7 +1357,7 @@ export class PuppetPuppeteer extends Puppet {
private
filename
(
rawPayload
:
WebMessageRawPayload
,
):
null
|
string
{
):
string
{
log
.
verbose
(
'
PuppetPuppeteer
'
,
'
filename()
'
)
let
filename
=
rawPayload
.
FileName
||
rawPayload
.
MediaId
||
rawPayload
.
MsgId
...
...
src/puppet-wechat4u/README.md
0 → 100644
浏览文件 @
860e85ec
# WECHATY-PUPPET-WECHAT4U
## NOTES
```
js
/**
* 发送撤回消息请求
*/
bot
.
sendMsg
(
'
测试撤回
'
,
ToUserName
)
.
then
(
res
=>
{
// 需要取得待撤回消息的MsgID
return
bot
.
revokeMsg
(
res
.
MsgID
,
ToUserName
)
})
.
catch
(
err
=>
{
console
.
log
(
err
)
})
```
src/puppet-wechat4u/index.ts
浏览文件 @
860e85ec
...
...
@@ -16,10 +16,10 @@
* limitations under the License.
*
*/
import
{
Puppet
Mock
}
from
'
./puppet-mock
'
import
{
Puppet
Wechat4u
}
from
'
./puppet-wechat4u
'
export
{
Puppet
Mock
,
Puppet
Wechat4u
,
}
export
default
Puppet
Mock
export
default
Puppet
Wechat4u
src/puppet-wechat4u/puppet-wechat4u.ts
浏览文件 @
860e85ec
此差异已折叠。
点击以展开。
src/puppet/puppet.spec.ts
浏览文件 @
860e85ec
...
...
@@ -18,7 +18,7 @@ import {
// ContactPayloadFilterFactory,
}
from
'
../puppet/schemas/contact
'
import
{
//
FriendRequestPayload,
FriendRequestPayload
,
}
from
'
../puppet/schemas/friend-request
'
import
{
MessagePayload
,
...
...
@@ -62,6 +62,9 @@ class PuppetTest extends Puppet {
* FriendRequest
*
*/
public
async
friendRequestRawPayload
(
id
:
string
)
:
Promise
<
any
>
{
return
{
id
}
as
any
}
public
async
friendRequestRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
FriendRequestPayload
>
{
return
rawPayload
}
public
async
friendRequestSend
(
contactId
:
string
,
hello
?:
string
)
:
Promise
<
void
>
{
return
{
contactId
,
hello
}
as
any
}
public
async
friendRequestAccept
(
contactId
:
string
,
ticket
:
string
)
:
Promise
<
void
>
{
return
{
contactId
,
ticket
}
as
any
}
...
...
src/puppet/puppet.ts
浏览文件 @
860e85ec
...
...
@@ -71,7 +71,11 @@ import {
let
PUPPET_COUNTER
=
0
/**
* Abstract Puppet Class
*
* Puppet Base Class
*
* See: https://github.com/Chatie/wechaty/wiki/Puppet
*
*/
export
abstract
class
Puppet
extends
EventEmitter
implements
Sayable
{
...
...
@@ -492,6 +496,9 @@ export abstract class Puppet extends EventEmitter implements Sayable {
public
abstract
async
friendRequestSend
(
contactId
:
string
,
hello
?:
string
)
:
Promise
<
void
>
public
abstract
async
friendRequestAccept
(
contactId
:
string
,
ticket
:
string
)
:
Promise
<
void
>
public
abstract
async
friendRequestRawPayload
(
id
:
string
)
:
Promise
<
any
>
public
abstract
async
friendRequestRawPayloadParser
(
rawPayload
:
any
)
:
Promise
<
FriendRequestPayload
>
public
async
friendRequestPayload
(
id
:
string
,
noCache
=
false
,
...
...
@@ -516,7 +523,12 @@ export abstract class Puppet extends EventEmitter implements Sayable {
log
.
silly
(
'
Puppet
'
,
'
friendRequestPayload() cache MISS
'
)
throw
new
Error
(
'
no payload
'
)
const
rawPayload
=
await
this
.
friendRequestRawPayload
(
id
)
const
payload
=
await
this
.
friendRequestRawPayloadParser
(
rawPayload
)
this
.
cacheFriendRequestPayload
.
set
(
id
,
payload
)
return
payload
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录