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

Support say(message)

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