feat(client): editAdminRights method

This commit is contained in:
teidesu 2021-05-16 14:55:17 +03:00
parent 32ef1c59ad
commit 633f1fdf4d
2 changed files with 58 additions and 0 deletions

View file

@ -34,6 +34,7 @@ import { deleteChatPhoto } from './methods/chats/delete-chat-photo'
import { deleteGroup } from './methods/chats/delete-group' import { deleteGroup } from './methods/chats/delete-group'
import { deleteHistory } from './methods/chats/delete-history' import { deleteHistory } from './methods/chats/delete-history'
import { deleteUserHistory } from './methods/chats/delete-user-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 { getChatEventLog } from './methods/chats/get-chat-event-log'
import { getChatMember } from './methods/chats/get-chat-member' import { getChatMember } from './methods/chats/get-chat-member'
import { getChatMembers } from './methods/chats/get-chat-members' import { getChatMembers } from './methods/chats/get-chat-members'
@ -823,6 +824,20 @@ export interface TelegramClient extends BaseTelegramClient {
chatId: InputPeerLike, chatId: InputPeerLike,
userId: InputPeerLike userId: InputPeerLike
): Promise<void> ): Promise<void>
/**
* 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<tl.RawChatAdminRights, '_'>,
rank?: string
): Promise<void>
/** /**
* Get chat event log ("Recent actions" in official * Get chat event log ("Recent actions" in official
* clients). * clients).
@ -3014,6 +3029,7 @@ export class TelegramClient extends BaseTelegramClient {
deleteGroup = deleteGroup deleteGroup = deleteGroup
deleteHistory = deleteHistory deleteHistory = deleteHistory
deleteUserHistory = deleteUserHistory deleteUserHistory = deleteUserHistory
editAdminRights = editAdminRights
getChatEventLog = getChatEventLog getChatEventLog = getChatEventLog
getChatMember = getChatMember getChatMember = getChatMember
getChatMembers = getChatMembers getChatMembers = getChatMembers

View file

@ -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<tl.RawChatAdminRights, '_'>,
rank = ''
): Promise<void> {
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)
}