feat: setEmojiStatus

This commit is contained in:
alina 🌸 2023-10-04 21:05:07 +03:00
parent 15b76aab60
commit e7dc8f0ec7
Signed by: teidesu
SSH key fingerprint: SHA256:uNeCpw6aTSU4aIObXLvHfLkDa82HWH9EiOj9AXOIRpI
3 changed files with 64 additions and 0 deletions

View file

@ -240,6 +240,7 @@ import { getUsers } from './methods/users/get-users'
import { iterProfilePhotos } from './methods/users/iter-profile-photos'
import { resolvePeer } from './methods/users/resolve-peer'
import { resolvePeerMany } from './methods/users/resolve-peer-many'
import { setEmojiStatus } from './methods/users/set-emoji-status'
import { setGlobalTtl } from './methods/users/set-global-ttl'
import { setOffline } from './methods/users/set-offline'
import { setProfilePhoto } from './methods/users/set-profile-photo'
@ -4887,6 +4888,20 @@ export interface TelegramClient extends BaseTelegramClient {
* @param force (default: `false`) Whether to force re-fetch the peer from the server
*/
resolvePeer(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputPeer>
/**
* Set an emoji status for the current user
*
* @param emoji Custom emoji ID or `null` to remove the emoji
*/
setEmojiStatus(
emoji: tl.Long | null,
params?: {
/**
* Date when the emoji status should expire (only if `emoji` is not `null`)
*/
until?: number | Date
},
): Promise<void>
/**
* Changes the current default value of the Time-To-Live setting,
* applied to all new chats.
@ -5254,6 +5269,7 @@ export class TelegramClient extends BaseTelegramClient {
iterProfilePhotos = iterProfilePhotos
resolvePeerMany = resolvePeerMany
resolvePeer = resolvePeer
setEmojiStatus = setEmojiStatus
setGlobalTtl = setGlobalTtl
setOffline = setOffline
setProfilePhoto = setProfilePhoto

View file

@ -0,0 +1,45 @@
import { tl } from '@mtcute/core'
import { TelegramClient } from '../../client'
import { normalizeDate } from '../../utils'
/**
* Set an emoji status for the current user
*
* @param emoji Custom emoji ID or `null` to remove the emoji
* @internal
*/
export async function setEmojiStatus(
this: TelegramClient,
emoji: tl.Long | null,
params?: {
/**
* Date when the emoji status should expire (only if `emoji` is not `null`)
*/
until?: number | Date
},
): Promise<void> {
const { until } = params ?? {}
let emojiStatus: tl.TypeEmojiStatus
if (emoji === null) {
emojiStatus = { _: 'emojiStatusEmpty' }
} else if (until) {
emojiStatus = {
_: 'emojiStatusUntil',
documentId: emoji,
until: normalizeDate(until),
}
} else {
emojiStatus = {
_: 'emojiStatus',
documentId: emoji,
}
}
await this.call({
_: 'account.updateEmojiStatus',
emojiStatus,
})
}

View file

@ -53,6 +53,9 @@ export function extractChannelIdFromUpdate(upd: tl.TypeUpdate): number | undefin
return res
}
export function normalizeDate(date: Date | number): number
export function normalizeDate(date: Date | number | undefined): number | undefined
export function normalizeDate(date: Date | number | undefined): number | undefined {
return date ? ~~((typeof date === 'number' ? date : date.getTime()) / 1000) : undefined
}