From 633f1fdf4da2a979dda5b2497f3d7c26b0353082 Mon Sep 17 00:00:00 2001 From: teidesu Date: Sun, 16 May 2021 14:55:17 +0300 Subject: [PATCH] feat(client): editAdminRights method --- packages/client/src/client.ts | 16 +++++++ .../src/methods/chats/edit-admin-rights.ts | 42 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 packages/client/src/methods/chats/edit-admin-rights.ts diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index ceba2952..d0b0b714 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -34,6 +34,7 @@ import { deleteChatPhoto } from './methods/chats/delete-chat-photo' import { deleteGroup } from './methods/chats/delete-group' import { deleteHistory } from './methods/chats/delete-history' import { deleteUserHistory } from './methods/chats/delete-user-history' +import { editAdminRights } from './methods/chats/edit-admin-rights' import { getChatEventLog } from './methods/chats/get-chat-event-log' import { getChatMember } from './methods/chats/get-chat-member' import { getChatMembers } from './methods/chats/get-chat-members' @@ -823,6 +824,20 @@ export interface TelegramClient extends BaseTelegramClient { chatId: InputPeerLike, userId: InputPeerLike ): Promise + /** + * Edit supergroup/channel admin rights of a user. + * + * @param chatId Chat ID + * @param userId User ID + * @param rights New admin rights + * @param rank (default: `''`) Custom admin rank + */ + editAdminRights( + chatId: InputPeerLike, + userId: InputPeerLike, + rights: Omit, + rank?: string + ): Promise /** * Get chat event log ("Recent actions" in official * clients). @@ -3014,6 +3029,7 @@ export class TelegramClient extends BaseTelegramClient { deleteGroup = deleteGroup deleteHistory = deleteHistory deleteUserHistory = deleteUserHistory + editAdminRights = editAdminRights getChatEventLog = getChatEventLog getChatMember = getChatMember getChatMembers = getChatMembers diff --git a/packages/client/src/methods/chats/edit-admin-rights.ts b/packages/client/src/methods/chats/edit-admin-rights.ts new file mode 100644 index 00000000..d2ef046f --- /dev/null +++ b/packages/client/src/methods/chats/edit-admin-rights.ts @@ -0,0 +1,42 @@ +import { TelegramClient } from '../../client' +import { InputPeerLike, MtCuteInvalidPeerTypeError } from '../../types' +import { tl } from '@mtcute/tl' +import { normalizeToInputChannel, normalizeToInputUser } from '../../utils/peer-utils' + +/** + * Edit supergroup/channel admin rights of a user. + * + * @param chatId Chat ID + * @param userId User ID + * @param rights New admin rights + * @param rank Custom admin rank + * @internal + */ +export async function editAdminRights( + this: TelegramClient, + chatId: InputPeerLike, + userId: InputPeerLike, + rights: Omit, + rank = '' +): Promise { + const chat = normalizeToInputChannel(await this.resolvePeer(chatId)) + if (!chat) + throw new MtCuteInvalidPeerTypeError(chatId, 'channel') + + const user = normalizeToInputUser(await this.resolvePeer(userId)) + if (!user) + throw new MtCuteInvalidPeerTypeError(userId, 'user') + + const res = await this.call({ + _: 'channels.editAdmin', + channel: chat, + userId: user, + adminRights: { + _: 'chatAdminRights', + ...rights + }, + rank + }) + + this._handleUpdate(res) +}