feat(client): replyPhoto, replyMedia, replyDice, replyLocation bound methods for Message

This commit is contained in:
teidesu 2021-04-10 16:03:33 +03:00
parent 97cbfd4840
commit 6911d7d756

View file

@ -21,10 +21,12 @@ import {
LiveLocation, LiveLocation,
Sticker, Sticker,
Voice, Voice,
InputMediaLike,
} from '../media' } from '../media'
import { parseDocument } from '../media/document-utils' import { parseDocument } from '../media/document-utils'
import { Game } from '../media/game' import { Game } from '../media/game'
import { WebPage } from '../media/web-page' import { WebPage } from '../media/web-page'
import { InputFileLike } from '../files'
/** /**
* A message or a service message * A message or a service message
@ -794,6 +796,114 @@ export class Message {
return this.client.sendText(this.chat.inputPeer, text, params) return this.client.sendText(this.chat.inputPeer, text, params)
} }
/**
* Send a photo in reply to this message.
*
* By default just sends a message to the same chat,
* to make the reply a "real" reply, pass `visible=true`
*
* @param photo Photo to send
* @param visible Whether the reply should be visible
* @param params
*/
replyPhoto(
photo: InputFileLike,
visible = false,
params?: Parameters<TelegramClient['sendPhoto']>[2]
): ReturnType<TelegramClient['sendPhoto']> {
if (visible) {
return this.client.sendPhoto(this.chat.inputPeer, photo, {
...(params || {}),
replyTo: this.id,
})
}
return this.client.sendPhoto(this.chat.inputPeer, photo, params)
}
/**
* Send a media in reply to this message.
*
* By default just sends a message to the same chat,
* to make the reply a "real" reply, pass `visible=true`
*
* @param media Media to send
* @param visible Whether the reply should be visible
* @param params
*/
replyMedia(
media: InputMediaLike,
visible = false,
params?: Parameters<TelegramClient['sendMedia']>[2]
): ReturnType<TelegramClient['sendMedia']> {
if (visible) {
return this.client.sendMedia(this.chat.inputPeer, media, {
...(params || {}),
replyTo: this.id,
})
}
return this.client.sendMedia(this.chat.inputPeer, media, params)
}
/**
* Send a dice in reply to this message.
*
* By default just sends a message to the same chat,
* to make the reply a "real" reply, pass `visible=true`
*
* @param emoji Emoji representing a dice to send
* @param visible Whether the reply should be visible
* @param params
*/
replyDice(
emoji: string,
visible = false,
params?: Parameters<TelegramClient['sendDice']>[2]
): ReturnType<TelegramClient['sendDice']> {
if (visible) {
return this.client.sendDice(this.chat.inputPeer, emoji, {
...(params || {}),
replyTo: this.id,
})
}
return this.client.sendDice(this.chat.inputPeer, emoji, params)
}
/**
* Send a static geo location in reply to this message.
*
* By default just sends a message to the same chat,
* to make the reply a "real" reply, pass `visible=true`
*
* @param latitude Latitude of the location
* @param longitude Longitude of the location
* @param visible Whether the reply should be visible
* @param params
*/
replyLocation(
latitude: number,
longitude: number,
visible = false,
params?: Parameters<TelegramClient['sendLocation']>[3]
): ReturnType<TelegramClient['sendLocation']> {
if (visible) {
return this.client.sendLocation(
this.chat.inputPeer,
latitude,
longitude,
{
...(params || {}),
replyTo: this.id,
}
)
}
return this.client.sendLocation(
this.chat.inputPeer,
latitude,
longitude,
params
)
}
/** /**
* Delete this message. * Delete this message.
* *
@ -808,7 +918,9 @@ export class Message {
* *
* @see TelegramClient.editMessage * @see TelegramClient.editMessage
*/ */
edit(params: Parameters<TelegramClient['editMessage']>[2]): Promise<Message> { edit(
params: Parameters<TelegramClient['editMessage']>[2]
): Promise<Message> {
return this.client.editMessage(this.chat.inputPeer, this.id, params) return this.client.editMessage(this.chat.inputPeer, this.id, params)
} }
@ -828,7 +940,7 @@ export class Message {
): Promise<Message> { ): Promise<Message> {
return this.edit({ return this.edit({
text, text,
...(params || {}) ...(params || {}),
}) })
} }
} }