feat!: updated to 177 layer

breaking: `.createGroup` now returns `CreateGroupResult`
This commit is contained in:
alina 🌸 2024-04-01 14:48:07 +03:00
parent dc1624e8bc
commit bf2f7999a6
Signed by: teidesu
SSH key fingerprint: SHA256:uNeCpw6aTSU4aIObXLvHfLkDa82HWH9EiOj9AXOIRpI
9 changed files with 52 additions and 18 deletions

View file

@ -36,7 +36,7 @@ describe('5. worker', async function () {
it('should throw errors', async function () { it('should throw errors', async function () {
try { try {
await port.call({ _: 'test.useError' }) await port.call({ _: 'test.useConfigSimple' })
throw new Error('should have thrown') throw new Error('should have thrown')
} catch (e) { } catch (e) {
expect(e).to.be.an.instanceOf(tl.RpcError) expect(e).to.be.an.instanceOf(tl.RpcError)

View file

@ -42,7 +42,7 @@ import { addChatMembers } from './methods/chats/add-chat-members.js'
import { archiveChats } from './methods/chats/archive-chats.js' import { archiveChats } from './methods/chats/archive-chats.js'
import { banChatMember } from './methods/chats/ban-chat-member.js' import { banChatMember } from './methods/chats/ban-chat-member.js'
import { createChannel } from './methods/chats/create-channel.js' import { createChannel } from './methods/chats/create-channel.js'
import { createGroup } from './methods/chats/create-group.js' import { createGroup, CreateGroupResult } from './methods/chats/create-group.js'
import { createSupergroup } from './methods/chats/create-supergroup.js' import { createSupergroup } from './methods/chats/create-supergroup.js'
import { deleteChannel } from './methods/chats/delete-channel.js' import { deleteChannel } from './methods/chats/delete-channel.js'
import { deleteChatPhoto } from './methods/chats/delete-chat-photo.js' import { deleteChatPhoto } from './methods/chats/delete-chat-photo.js'
@ -1175,6 +1175,7 @@ export interface TelegramClient extends ITelegramClient {
* *
* @param chatId ID of the chat or its username * @param chatId ID of the chat or its username
* @param users ID(s) of the user(s) to add * @param users ID(s) of the user(s) to add
* @returns List of users that were failed to be invited (may be empty)
*/ */
addChatMembers( addChatMembers(
chatId: InputPeerLike, chatId: InputPeerLike,
@ -1188,7 +1189,7 @@ export interface TelegramClient extends ITelegramClient {
*/ */
forwardCount?: number forwardCount?: number
}, },
): Promise<void> ): Promise<tl.RawMissingInvitee[]>
/** /**
* Archive one or more chats * Archive one or more chats
* *
@ -1266,7 +1267,7 @@ export interface TelegramClient extends ITelegramClient {
* @default 0 (i.e. messages don't expire) * @default 0 (i.e. messages don't expire)
*/ */
ttlPeriod?: number ttlPeriod?: number
}): Promise<Chat> }): Promise<CreateGroupResult>
/** /**
* Create a new supergroup * Create a new supergroup
* *

View file

@ -32,6 +32,7 @@ export { addChatMembers } from './methods/chats/add-chat-members.js'
export { archiveChats } from './methods/chats/archive-chats.js' export { archiveChats } from './methods/chats/archive-chats.js'
export { banChatMember } from './methods/chats/ban-chat-member.js' export { banChatMember } from './methods/chats/ban-chat-member.js'
export { createChannel } from './methods/chats/create-channel.js' export { createChannel } from './methods/chats/create-channel.js'
export type { CreateGroupResult } from './methods/chats/create-group.js'
export { createGroup } from './methods/chats/create-group.js' export { createGroup } from './methods/chats/create-group.js'
export { createSupergroup } from './methods/chats/create-supergroup.js' export { createSupergroup } from './methods/chats/create-supergroup.js'
export { deleteChannel } from './methods/chats/delete-channel.js' export { deleteChannel } from './methods/chats/delete-channel.js'

View file

@ -1,3 +1,5 @@
import { tl } from '@mtcute/tl'
import { MaybeArray } from '../../../types/utils.js' import { MaybeArray } from '../../../types/utils.js'
import { ITelegramClient } from '../../client.types.js' import { ITelegramClient } from '../../client.types.js'
import { InputPeerLike, MtInvalidPeerTypeError } from '../../types/index.js' import { InputPeerLike, MtInvalidPeerTypeError } from '../../types/index.js'
@ -10,6 +12,7 @@ import { resolvePeerMany } from '../users/resolve-peer-many.js'
* *
* @param chatId ID of the chat or its username * @param chatId ID of the chat or its username
* @param users ID(s) of the user(s) to add * @param users ID(s) of the user(s) to add
* @returns List of users that were failed to be invited (may be empty)
*/ */
export async function addChatMembers( export async function addChatMembers(
client: ITelegramClient, client: ITelegramClient,
@ -24,7 +27,7 @@ export async function addChatMembers(
*/ */
forwardCount?: number forwardCount?: number
}, },
): Promise<void> { ): Promise<tl.RawMissingInvitee[]> {
const { forwardCount = 100 } = params const { forwardCount = 100 } = params
const chat = await resolvePeer(client, chatId) const chat = await resolvePeer(client, chatId)
@ -32,23 +35,31 @@ export async function addChatMembers(
if (!Array.isArray(users)) users = [users] if (!Array.isArray(users)) users = [users]
if (isInputPeerChat(chat)) { if (isInputPeerChat(chat)) {
const missing: tl.RawMissingInvitee[] = []
for (const user of users) { for (const user of users) {
const p = await resolveUser(client, user) const p = await resolveUser(client, user)
const updates = await client.call({ const { updates, missingInvitees } = await client.call({
_: 'messages.addChatUser', _: 'messages.addChatUser',
chatId: chat.chatId, chatId: chat.chatId,
userId: p, userId: p,
fwdLimit: forwardCount, fwdLimit: forwardCount,
}) })
client.handleClientUpdate(updates) client.handleClientUpdate(updates)
missing.push(...missingInvitees)
} }
return missing
} else if (isInputPeerChannel(chat)) { } else if (isInputPeerChannel(chat)) {
const updates = await client.call({ const { updates, missingInvitees } = await client.call({
_: 'channels.inviteToChannel', _: 'channels.inviteToChannel',
channel: toInputChannel(chat), channel: toInputChannel(chat),
users: await resolvePeerMany(client, users, toInputUser), users: await resolvePeerMany(client, users, toInputUser),
}) })
client.handleClientUpdate(updates) client.handleClientUpdate(updates)
} else throw new MtInvalidPeerTypeError(chatId, 'chat or channel')
return missingInvitees
}
throw new MtInvalidPeerTypeError(chatId, 'chat or channel')
} }

View file

@ -1,3 +1,5 @@
import { tl } from '@mtcute/tl'
import { MaybeArray } from '../../../types/utils.js' import { MaybeArray } from '../../../types/utils.js'
import { ITelegramClient } from '../../client.types.js' import { ITelegramClient } from '../../client.types.js'
import { Chat, InputPeerLike } from '../../types/index.js' import { Chat, InputPeerLike } from '../../types/index.js'
@ -5,6 +7,14 @@ import { assertIsUpdatesGroup } from '../../updates/utils.js'
import { toInputUser } from '../../utils/peer-utils.js' import { toInputUser } from '../../utils/peer-utils.js'
import { resolvePeerMany } from '../users/resolve-peer-many.js' import { resolvePeerMany } from '../users/resolve-peer-many.js'
// @exported
export interface CreateGroupResult {
/** Chat that was created */
chat: Chat
/** Users that were failed to be invited */
missing: tl.RawMissingInvitee[]
}
/** /**
* Create a legacy group chat * Create a legacy group chat
* *
@ -32,7 +42,7 @@ export async function createGroup(
*/ */
ttlPeriod?: number ttlPeriod?: number
}, },
): Promise<Chat> { ): Promise<CreateGroupResult> {
const { title } = params const { title } = params
let { users } = params let { users } = params
@ -40,15 +50,18 @@ export async function createGroup(
const peers = await resolvePeerMany(client, users, toInputUser) const peers = await resolvePeerMany(client, users, toInputUser)
const res = await client.call({ const { updates, missingInvitees } = await client.call({
_: 'messages.createChat', _: 'messages.createChat',
title, title,
users: peers, users: peers,
}) })
assertIsUpdatesGroup('messages.createChat', res) assertIsUpdatesGroup('messages.createChat', updates)
client.handleClientUpdate(res) client.handleClientUpdate(updates)
return new Chat(res.chats[0]) return {
chat: new Chat(updates.chats[0]),
missing: missingInvitees,
}
} }

View file

@ -2,7 +2,7 @@
TL schema and related utils used for mtcute. TL schema and related utils used for mtcute.
Generated from TL layer **176** (last updated on 17.03.2024). Generated from TL layer **177** (last updated on 01.04.2024).
## About ## About

File diff suppressed because one or more lines are too long

View file

@ -11,7 +11,10 @@
"autoDownloadSettings": ["video_size_max", "file_size_max"], "autoDownloadSettings": ["video_size_max", "file_size_max"],
"botInfo": ["user_id"], "botInfo": ["user_id"],
"boost": ["user_id"], "boost": ["user_id"],
"botBusinessConnection": ["user_id"],
"businessRecipients": ["users"], "businessRecipients": ["users"],
"businessBotRecipients": ["users", "exclude_users"],
"contactBirthday": ["contact_id"],
"channel": ["id"], "channel": ["id"],
"channelAdminLogEvent": ["user_id"], "channelAdminLogEvent": ["user_id"],
"channelAdminLogEventActionChangeLinkedChat": ["prev_value", "new_value"], "channelAdminLogEventActionChangeLinkedChat": ["prev_value", "new_value"],
@ -59,7 +62,7 @@
"inputUserFromMessage": ["user_id"], "inputUserFromMessage": ["user_id"],
"keyboardButtonUserProfile": ["user_id"], "keyboardButtonUserProfile": ["user_id"],
"mediaAreaChannelPost": ["channel_id"], "mediaAreaChannelPost": ["channel_id"],
"message": ["via_bot_id"], "message": ["via_bot_id", "via_business_bot_id"],
"messageActionChannelMigrateFrom": ["chat_id"], "messageActionChannelMigrateFrom": ["chat_id"],
"messageActionChatAddUser": ["users"], "messageActionChatAddUser": ["users"],
"messageActionChatCreate": ["users"], "messageActionChatCreate": ["users"],
@ -74,10 +77,12 @@
"messageUserVote": ["user_id"], "messageUserVote": ["user_id"],
"messageUserVoteInputOption": ["user_id"], "messageUserVoteInputOption": ["user_id"],
"messageUserVoteMultiple": ["user_id"], "messageUserVoteMultiple": ["user_id"],
"missingInvitee": ["user_id"],
"payments.paymentForm": ["bot_id"], "payments.paymentForm": ["bot_id"],
"payments.paymentReceipt": ["bot_id"], "payments.paymentReceipt": ["bot_id"],
"peerChannel": ["channel_id"], "peerChannel": ["channel_id"],
"peerChat": ["chat_id"], "peerChat": ["chat_id"],
"peerSettings": ["business_bot_id"],
"peerUser": ["user_id"], "peerUser": ["user_id"],
"phoneCall": ["admin_id", "participant_id"], "phoneCall": ["admin_id", "participant_id"],
"phoneCallAccepted": ["admin_id", "participant_id"], "phoneCallAccepted": ["admin_id", "participant_id"],
@ -90,6 +95,9 @@
"readParticipantDate": ["user_id"], "readParticipantDate": ["user_id"],
"recentMeUrlChat": ["chat_id"], "recentMeUrlChat": ["chat_id"],
"recentMeUrlUser": ["user_id"], "recentMeUrlUser": ["user_id"],
"requestedPeerChannel": ["chat_id"],
"requestedPeerChat": ["chat_id"],
"requestedPeerUser": ["user_id"],
"secureFile": ["size"], "secureFile": ["size"],
"statsGroupTopAdmin": ["user_id"], "statsGroupTopAdmin": ["user_id"],
"statsGroupTopInviter": ["user_id"], "statsGroupTopInviter": ["user_id"],
@ -144,7 +152,7 @@
"updateUserTyping": ["user_id"], "updateUserTyping": ["user_id"],
"user": ["id"], "user": ["id"],
"userEmpty": ["id"], "userEmpty": ["id"],
"userFull": ["id"], "userFull": ["id", "personal_channel_id"],
"userStories": ["user_id"], "userStories": ["user_id"],
"webAuthorization": ["bot_id"], "webAuthorization": ["bot_id"],
"_": "Dummy line teehee~" "_": "Dummy line teehee~"

View file

@ -1,6 +1,6 @@
{ {
"name": "@mtcute/tl", "name": "@mtcute/tl",
"version": "176.0.0", "version": "177.0.0",
"description": "TL schema used for mtcute", "description": "TL schema used for mtcute",
"main": "index.js", "main": "index.js",
"author": "alina sireneva <alina@tei.su>", "author": "alina sireneva <alina@tei.su>",