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

abstract classes

上级 e6ee5fd8
......@@ -197,7 +197,7 @@ export class Config {
}
export interface Sayable {
say(content: string, replyTo?: any|any[]): Promise<boolean>
say(content: string, replyTo?: any|any[]): Promise<void>
}
export type WechatEvent = 'friend'
......
......@@ -20,7 +20,7 @@
import {
// config,
log,
// log,
} from './config'
import Contact from './contact'
import PuppetAccessory from './puppet-accessory'
......@@ -40,15 +40,6 @@ export abstract class FriendRequest extends PuppetAccessory {
public hello: string
public type: 'send' | 'receive' | 'confirm'
constructor() {
super()
log.verbose('FriendRequest', 'constructor()')
// if (!config.puppetInstance()) {
// throw new Error('no Config.puppetInstance() instanciated')
// }
}
public abstract send(contact: Contact, hello: string): Promise<boolean>
public abstract accept(): Promise<boolean>
......
......@@ -29,92 +29,10 @@ import Contact from './contact'
import Room from './room'
import PuppetAccessory from './puppet-accessory'
/**
*
* Enum for AppMsgType values.
*
* @enum {number}
* @property {number} TEXT - AppMsgType.TEXT (1) for TEXT
* @property {number} IMG - AppMsgType.IMG (2) for IMG
* @property {number} AUDIO - AppMsgType.AUDIO (3) for AUDIO
* @property {number} VIDEO - AppMsgType.VIDEO (4) for VIDEO
* @property {number} URL - AppMsgType.URL (5) for URL
* @property {number} ATTACH - AppMsgType.ATTACH (6) for ATTACH
* @property {number} OPEN - AppMsgType.OPEN (7) for OPEN
* @property {number} EMOJI - AppMsgType.EMOJI (8) for EMOJI
* @property {number} VOICE_REMIND - AppMsgType.VOICE_REMIND (9) for VOICE_REMIND
* @property {number} SCAN_GOOD - AppMsgType.SCAN_GOOD (10) for SCAN_GOOD
* @property {number} GOOD - AppMsgType.GOOD (13) for GOOD
* @property {number} EMOTION - AppMsgType.EMOTION (15) for EMOTION
* @property {number} CARD_TICKET - AppMsgType.CARD_TICKET (16) for CARD_TICKET
* @property {number} REALTIME_SHARE_LOCATION - AppMsgType.REALTIME_SHARE_LOCATION (17) for REALTIME_SHARE_LOCATION
* @property {number} TRANSFERS - AppMsgType.TRANSFERS (2e3) for TRANSFERS
* @property {number} RED_ENVELOPES - AppMsgType.RED_ENVELOPES (2001) for RED_ENVELOPES
* @property {number} READER_TYPE - AppMsgType.READER_TYPE (100001) for READER_TYPE
*/
export enum AppMsgType {
TEXT = 1,
IMG = 2,
AUDIO = 3,
VIDEO = 4,
URL = 5,
ATTACH = 6,
OPEN = 7,
EMOJI = 8,
VOICE_REMIND = 9,
SCAN_GOOD = 10,
GOOD = 13,
EMOTION = 15,
CARD_TICKET = 16,
REALTIME_SHARE_LOCATION = 17,
TRANSFERS = 2e3,
RED_ENVELOPES = 2001,
READER_TYPE = 100001,
}
/**
*
* Enum for MsgType values.
* @enum {number}
* @property {number} TEXT - MsgType.TEXT (1) for TEXT
* @property {number} IMAGE - MsgType.IMAGE (3) for IMAGE
* @property {number} VOICE - MsgType.VOICE (34) for VOICE
* @property {number} VERIFYMSG - MsgType.VERIFYMSG (37) for VERIFYMSG
* @property {number} POSSIBLEFRIEND_MSG - MsgType.POSSIBLEFRIEND_MSG (40) for POSSIBLEFRIEND_MSG
* @property {number} SHARECARD - MsgType.SHARECARD (42) for SHARECARD
* @property {number} VIDEO - MsgType.VIDEO (43) for VIDEO
* @property {number} EMOTICON - MsgType.EMOTICON (47) for EMOTICON
* @property {number} LOCATION - MsgType.LOCATION (48) for LOCATION
* @property {number} APP - MsgType.APP (49) for APP
* @property {number} VOIPMSG - MsgType.VOIPMSG (50) for VOIPMSG
* @property {number} STATUSNOTIFY - MsgType.STATUSNOTIFY (51) for STATUSNOTIFY
* @property {number} VOIPNOTIFY - MsgType.VOIPNOTIFY (52) for VOIPNOTIFY
* @property {number} VOIPINVITE - MsgType.VOIPINVITE (53) for VOIPINVITE
* @property {number} MICROVIDEO - MsgType.MICROVIDEO (62) for MICROVIDEO
* @property {number} SYSNOTICE - MsgType.SYSNOTICE (9999) for SYSNOTICE
* @property {number} SYS - MsgType.SYS (10000) for SYS
* @property {number} RECALLED - MsgType.RECALLED (10002) for RECALLED
*/
export enum MsgType {
TEXT = 1,
IMAGE = 3,
VOICE = 34,
VERIFYMSG = 37,
POSSIBLEFRIEND_MSG = 40,
SHARECARD = 42,
VIDEO = 43,
EMOTICON = 47,
LOCATION = 48,
APP = 49,
VOIPMSG = 50,
STATUSNOTIFY = 51,
VOIPNOTIFY = 52,
VOIPINVITE = 53,
MICROVIDEO = 62,
SYSNOTICE = 9999,
SYS = 10000,
RECALLED = 10002,
}
import {
MsgType,
AppMsgType,
} from './puppet-web/schema'
// export type TypeName = 'attachment'
// | 'audio'
......
......@@ -46,10 +46,10 @@ import {
MsgType,
} from './puppet-web/schema'
export type TypeName = 'attachment'
| 'audio'
| 'image'
| 'video'
// export type TypeName = 'attachment'
// | 'audio'
// | 'image'
// | 'video'
/**
* All wechat messages will be encapsulated as a Message.
......
......@@ -28,14 +28,20 @@ import {
WechatyEvent,
log,
} from './config'
import Contact from './contact'
import {
Contact,
ContactQueryFilter,
} from './contact'
import FriendRequest from './friend-request'
import {
Message,
MediaMessage,
} from './message'
import Profile from './profile'
import Room from './room'
import {
Room,
RoomQueryFilter,
} from './room'
export interface ScanData {
avatar: string, // Image Data URL
......@@ -53,7 +59,6 @@ export interface PuppetOptions {
* Abstract Puppet Class
*/
export abstract class Puppet extends EventEmitter implements Sayable {
public userId?: string
public user?: Contact
public state: StateSwitch
......@@ -114,15 +119,15 @@ export abstract class Puppet extends EventEmitter implements Sayable {
/**
* Message
*/
public abstract forward(message: MediaMessage, contact: Contact | Room) : Promise<boolean>
public abstract say(content: string) : Promise<boolean>
public abstract send(message: Message | MediaMessage) : Promise<boolean>
public abstract forward(message: MediaMessage, contact: Contact | Room) : Promise<void>
public abstract say(content: string) : Promise<void>
public abstract send(message: Message | MediaMessage) : Promise<void>
/**
* Login / Logout
*/
public abstract logonoff() : boolean
public abstract logout() : Promise<void>
public abstract logonoff() : boolean
public abstract logout() : Promise<void>
/**
* Misc
......@@ -132,35 +137,25 @@ export abstract class Puppet extends EventEmitter implements Sayable {
/**
* FriendRequest
*/
public abstract friendRequestSend(contact: Contact, hello?: string) : Promise<any>
public abstract friendRequestAccept(contact: Contact, ticket: string) : Promise<any>
public abstract friendRequestSend(contact: Contact, hello?: string) : Promise<void>
public abstract friendRequestAccept(contact: Contact, ticket: string) : Promise<void>
/**
* Room
*/
public abstract roomAdd(room: Room, contact: Contact) : Promise<number>
public abstract roomDel(room: Room, contact: Contact) : Promise<number>
public abstract roomTopic(room: Room, topic: string) : Promise<string>
public abstract roomAdd(room: Room, contact: Contact) : Promise<void>
public abstract roomCreate(contactList: Contact[], topic?: string) : Promise<Room>
public abstract roomFind(filterFunc: string) : Promise<Room[]>
public abstract roomDel(room: Room, contact: Contact) : Promise<void>
public abstract roomFindAll(filterFunc: RoomQueryFilter) : Promise<Room[]>
public abstract roomTopic(room: Room, topic: string) : Promise<string | void>
/**
* Contact
*/
public abstract contactFind(filterFunc: string) : Promise<Contact[]>
public abstract contactAlias(contact: Contact, alias: string|null) : Promise<boolean>
public abstract contactAlias(contact: Contact, alias: string|null) : Promise<void>
public abstract contactFindAll(filter: ContactQueryFilter) : Promise<Contact[]>
}
/**
* <error>
* <ret>1203</ret>
* <message>当前登录环境异常。为了你的帐号安全,暂时不能登录web微信。你可以通过手机客户端或者windows微信登录。</message>
* </error>
*/
// export enum WechatErrorCode {
// WebBlock = 1203,
// }
// export class WechatError extends Error {
// public code: WechatErrorCode
// }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册