feat(client): mention() method for Chat
mostly done to unify User | Chat type interface and further simplify usage of msg.sender
This commit is contained in:
parent
1238e7c32c
commit
2682392d26
1 changed files with 41 additions and 0 deletions
|
@ -515,6 +515,47 @@ export class Chat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a mention for the chat.
|
||||||
|
*
|
||||||
|
* If this is a user, works just like {@link User.mention}.
|
||||||
|
* Otherwise, if the chat has a username, a @username is created
|
||||||
|
* (or text link, if `text` is passed). If it does not, chat title is
|
||||||
|
* simply returned without additional formatting.
|
||||||
|
*
|
||||||
|
* When available and `text` is omitted, this method will return `@username`.
|
||||||
|
* Otherwise, text mention is created for the given (or default) parse mode
|
||||||
|
*
|
||||||
|
* @param text Text of the mention.
|
||||||
|
* @param parseMode Parse mode to use when creating mention.
|
||||||
|
* @example
|
||||||
|
* ```typescript
|
||||||
|
* msg.replyText(`Hello, ${msg.chat.mention()`)
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
mention(text?: string | null, parseMode?: string | null): string {
|
||||||
|
if (this.user) return this.user.mention(text, parseMode)
|
||||||
|
|
||||||
|
if (!text && this.username) {
|
||||||
|
return `@${this.username}`
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!text) text = this.displayName
|
||||||
|
if (!this.username) return text
|
||||||
|
|
||||||
|
if (!parseMode) parseMode = this.client['_defaultParseMode']
|
||||||
|
|
||||||
|
return this.client.getParseMode(parseMode).unparse(text, [
|
||||||
|
{
|
||||||
|
raw: undefined as any,
|
||||||
|
type: 'text_link',
|
||||||
|
offset: 0,
|
||||||
|
length: text.length,
|
||||||
|
url: `https://t.me/${this.username}`
|
||||||
|
},
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Join this chat.
|
* Join this chat.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue