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

Support say(message)

上级 8d0be487
...@@ -320,11 +320,12 @@ export class Contact extends Accessory implements Sayable { ...@@ -320,11 +320,12 @@ export class Contact extends Accessory implements Sayable {
return `Contact<${identity}>` return `Contact<${identity}>`
} }
public async say (text: string) : Promise<void | Message> public say (text: string) : Promise<void | Message>
public async say (contact: Contact) : Promise<void | Message> public say (message: Message) : Promise<void | Message>
public async say (file: FileBox) : Promise<void | Message> public say (contact: Contact) : Promise<void | Message>
public async say (mini: MiniProgram) : Promise<void | Message> public say (file: FileBox) : Promise<void | Message>
public async say (url: UrlLink) : Promise<void | Message> public say (mini: MiniProgram) : Promise<void | Message>
public say (url: UrlLink) : Promise<void | Message>
/** /**
* > Tips: * > Tips:
...@@ -385,12 +386,18 @@ export class Contact extends Accessory implements Sayable { ...@@ -385,12 +386,18 @@ export class Contact extends Accessory implements Sayable {
*/ */
public async say ( public async say (
something: string something: string
| Message
| Contact | Contact
| FileBox | FileBox
| MiniProgram | MiniProgram
| UrlLink | UrlLink
): Promise<void | Message> { ): Promise<void | Message> {
log.verbose('Contact', 'say(%s)', something) log.verbose('Contact', 'say(%s)', something)
if (something instanceof Message) {
return something.forward(this)
}
let msgId: string | void let msgId: string | void
if (typeof something === 'string') { if (typeof something === 'string') {
/** /**
......
...@@ -416,13 +416,14 @@ export class Message extends Accessory implements Sayable { ...@@ -416,13 +416,14 @@ export class Message extends Accessory implements Sayable {
} }
} }
public async say (text: string, mention?: Contact | Contact[]) : Promise<void | Message> public say (text: string, mention?: Contact | Contact[]) : Promise<void | Message>
public async say (contact: Contact) : Promise<void | Message> public say (message: Message) : Promise<void | Message>
public async say (file: FileBox) : Promise<void | Message> public say (contact: Contact) : Promise<void | Message>
public async say (url: UrlLink) : Promise<void | Message> public say (file: FileBox) : Promise<void | Message>
public async say (mini: MiniProgram) : Promise<void | Message> public say (url: UrlLink) : Promise<void | Message>
public say (mini: MiniProgram) : Promise<void | Message>
public async say (...args: never[]): Promise<never>
public say (...args: never[]): Promise<never>
/** /**
* Reply a Text or Media File message to the sender. * Reply a Text or Media File message to the sender.
* > Tips: * > Tips:
...@@ -501,7 +502,12 @@ export class Message extends Accessory implements Sayable { ...@@ -501,7 +502,12 @@ export class Message extends Accessory implements Sayable {
* .start() * .start()
*/ */
public async say ( public async say (
textOrContactOrFileOrUrlOrMini : string | Contact | FileBox | UrlLink | MiniProgram, textOrContactOrFileOrUrlOrMini : string
| Message
| Contact
| FileBox
| UrlLink
| MiniProgram,
): Promise<void | Message> { ): Promise<void | Message> {
log.verbose('Message', 'say(%s)', textOrContactOrFileOrUrlOrMini) log.verbose('Message', 'say(%s)', textOrContactOrFileOrUrlOrMini)
...@@ -511,14 +517,24 @@ export class Message extends Accessory implements Sayable { ...@@ -511,14 +517,24 @@ export class Message extends Accessory implements Sayable {
const room = this.room() const room = this.room()
let conversationId: string let conversationId: string
let conversation
if (room) { if (room) {
conversation = room
conversationId = room.id conversationId = room.id
} else if (from) { } else if (from) {
conversation = from
conversationId = from.id conversationId = from.id
} else { } else {
throw new Error('neither room nor from?') throw new Error('neither room nor from?')
} }
/**
* Support say a existing message: just forward it.
*/
if (textOrContactOrFileOrUrlOrMini instanceof Message) {
return textOrContactOrFileOrUrlOrMini.forward(conversation)
}
let msgId: void | string let msgId: void | string
if (typeof textOrContactOrFileOrUrlOrMini === 'string') { if (typeof textOrContactOrFileOrUrlOrMini === 'string') {
/** /**
......
...@@ -378,6 +378,7 @@ export class Room extends Accessory implements Sayable { ...@@ -378,6 +378,7 @@ export class Room extends Accessory implements Sayable {
} }
public say (text: string) : Promise<void | Message> public say (text: string) : Promise<void | Message>
public say (message: Message) : Promise<void | Message>
public say (text: string, ...mentionList: Contact[]) : Promise<void | Message> public say (text: string, ...mentionList: Contact[]) : Promise<void | Message>
public say (textList: TemplateStringsArray, ...varList: any[]) : Promise<void | Message> public say (textList: TemplateStringsArray, ...varList: any[]) : Promise<void | Message>
public say (file: FileBox) : Promise<void | Message> public say (file: FileBox) : Promise<void | Message>
...@@ -458,6 +459,7 @@ export class Room extends Accessory implements Sayable { ...@@ -458,6 +459,7 @@ export class Room extends Accessory implements Sayable {
*/ */
public async say ( public async say (
something : string something : string
| Message
| Contact | Contact
| FileBox | FileBox
| MiniProgram | MiniProgram
...@@ -474,12 +476,20 @@ export class Room extends Accessory implements Sayable { ...@@ -474,12 +476,20 @@ export class Room extends Accessory implements Sayable {
let text: string let text: string
let msgId: string | void let msgId: string | void
if (something instanceof Message) {
return something.forward(this)
}
function isTemplateStringArray (tsa: any): tsa is TemplateStringsArray {
return tsa instanceof Array
}
/** /**
* *
* 0. TemplateStringArray * 0. TemplateStringArray
* *
*/ */
if (something instanceof Array) { if (isTemplateStringArray(something)) {
const msgId = await this.sayTemplateStringsArray( const msgId = await this.sayTemplateStringsArray(
something as TemplateStringsArray, something as TemplateStringsArray,
...varList, ...varList,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册