From cdd01d43fca4c6d59729160621314ad7cbd3a097 Mon Sep 17 00:00:00 2001 From: teidesu Date: Sun, 11 Apr 2021 16:32:10 +0300 Subject: [PATCH] feat(client): setChatUsername method --- packages/client/src/client.ts | 15 +++++++++ .../src/methods/chats/set-chat-username.ts | 31 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 packages/client/src/methods/chats/set-chat-username.ts diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 152fe074..91b14abf 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -32,6 +32,7 @@ import { setChatDefaultPermissions } from './methods/chats/set-chat-default-perm import { setChatDescription } from './methods/chats/set-chat-description' import { setChatPhoto } from './methods/chats/set-chat-photo' import { setChatTitle } from './methods/chats/set-chat-title' +import { setChatUsername } from './methods/chats/set-chat-username' import { setSlowMode } from './methods/chats/set-slow-mode' import { unarchiveChats } from './methods/chats/unarchive-chats' import { downloadAsBuffer } from './methods/files/download-buffer' @@ -603,6 +604,20 @@ export class TelegramClient extends BaseTelegramClient { setChatTitle(chatId: InputPeerLike, title: string): Promise { return setChatTitle.apply(this, arguments) } + /** + * Change supergroup/channel username + * + * You must be an administrator and have the appropriate permissions. + * + * @param chatId Chat ID or current username + * @param username New username, or `null` to remove + */ + setChatUsername( + chatId: InputPeerLike, + username: string | null + ): Promise { + return setChatUsername.apply(this, arguments) + } /** * Set supergroup's slow mode interval. * diff --git a/packages/client/src/methods/chats/set-chat-username.ts b/packages/client/src/methods/chats/set-chat-username.ts new file mode 100644 index 00000000..36c7267e --- /dev/null +++ b/packages/client/src/methods/chats/set-chat-username.ts @@ -0,0 +1,31 @@ +import { TelegramClient } from '../../client' +import { + InputPeerLike, + MtCuteInvalidPeerTypeError, +} from '../../types' +import { normalizeToInputChannel } from '../../utils/peer-utils' + +/** + * Change supergroup/channel username + * + * You must be an administrator and have the appropriate permissions. + * + * @param chatId Chat ID or current username + * @param username New username, or `null` to remove + * @internal + */ +export async function setChatUsername( + this: TelegramClient, + chatId: InputPeerLike, + username: string | null +): Promise { + const chat = normalizeToInputChannel(await this.resolvePeer(chatId)) + if (!chat) + throw new MtCuteInvalidPeerTypeError(chatId, 'channel') + + await this.call({ + _: 'channels.updateUsername', + channel: chat, + username: username || '' + }) +}