From 1ec45078910006f664f81473d1310930ee90abd5 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 10 Nov 2022 15:56:38 +0600 Subject: [PATCH] add new type of chats ids --- .../extensions/api/LiveLocationProvider.kt | 2 +- .../inmo/tgbotapi/extensions/api/StopPoll.kt | 2 +- .../api/chat/get/GetChatMenuButton.kt | 4 +- .../api/chat/members/BanChatMember.kt | 4 +- .../api/chat/members/BanChatSenderChat.kt | 8 +- .../api/chat/members/GetChatMember.kt | 4 +- .../api/chat/members/PromoteChatMember.kt | 4 +- .../api/chat/members/RestrictChatMember.kt | 4 +- .../SetChatAdministratorCustomTitle.kt | 6 +- .../api/chat/members/UnbanChatMember.kt | 4 +- .../api/chat/members/UnbanChatSenderChat.kt | 8 +- .../api/chat/modify/SetChatMenuButton.kt | 4 +- .../api/games/GetGameHighScoresByChat.kt | 4 +- .../api/games/SetGameScoreByChatId.kt | 4 +- .../api/send/RepliesWithChatsAndMessages.kt | 136 +++++++++--------- .../extensions/api/send/SendActionDSL.kt | 25 ++-- .../tgbotapi/extensions/api/send/Sends.kt | 2 +- .../extensions/api/send/media/SendVoice.kt | 17 +-- .../api/send/payments/SendInvoice.kt | 4 +- .../extensions/api/send/polls/SendPoll.kt | 25 ++-- .../chat/abstracts/ChatSenderRequest.kt | 5 +- .../tgbotapi/requests/chat/get/GetChat.kt | 9 +- .../chat/members/BanChatSenderChat.kt | 2 +- .../chat/members/UnbanChatSenderChat.kt | 2 +- .../requests/games/GetGameHighScoresByChat.kt | 2 +- .../requests/games/SetGameScoreByChatId.kt | 2 +- .../requests/send/payments/SendInvoice.kt | 4 +- .../dev/inmo/tgbotapi/types/ChatIdentifier.kt | 45 ++++-- .../dev/inmo/tgbotapi/types/RequestError.kt | 2 +- .../tgbotapi/types/ResponseParametersRaw.kt | 2 +- .../dev/inmo/tgbotapi/types/chat/Abstracts.kt | 2 +- .../tgbotapi/types/chat/ChatSerializers.kt | 20 ++- .../dev/inmo/tgbotapi/types/chat/Extended.kt | 18 +-- .../tgbotapi/types/chat/ExtendedAbstracts.kt | 6 +- .../dev/inmo/tgbotapi/types/chat/Impls.kt | 10 +- .../tgbotapi/types/chat/UnknownChatType.kt | 4 +- .../message/ChatEvents/GroupChatCreated.kt | 4 +- .../ChatEvents/MigratedToSupergroup.kt | 4 +- .../ChatEvents/SupergroupChatCreated.kt | 4 +- .../inmo/tgbotapi/types/message/RawMessage.kt | 18 ++- .../extensions/ChatIdentifierWithThreadId.kt | 17 ++- .../ChatEvents/MigratedToSupergroupTest.kt | 6 +- .../utils/extensions/raw/Message.kt | 4 +- .../utils/formatting/StringFormatting.kt | 2 +- .../utils/updates/UpdatesChatFilters.kt | 8 +- 45 files changed, 262 insertions(+), 211 deletions(-) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt index 3ffc151934..9818e26730 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/LiveLocationProvider.kt @@ -166,7 +166,7 @@ suspend fun TelegramBot.startLiveLocation( */ suspend fun TelegramBot.startLiveLocation( scope: CoroutineScope, - chatId: ChatId, + chatId: IdChatIdentifier, location: StaticLocation, liveTimeMillis: Long = defaultLivePeriodDelayMillis, initHorizontalAccuracy: Meters? = null, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt index ad05103cd6..5bfd721463 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/StopPoll.kt @@ -34,7 +34,7 @@ suspend fun TelegramBot.stopPoll( * as a builder for that */ suspend fun TelegramBot.stopPoll( - chatId: ChatId, + chatId: IdChatIdentifier, message: Message, replyMarkup: InlineKeyboardMarkup? = null ) = stopPoll(chatId, message.messageId, replyMarkup) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt index 3ae3801803..e75c0aa02d 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/get/GetChatMenuButton.kt @@ -2,11 +2,11 @@ package dev.inmo.tgbotapi.extensions.api.chat.get import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.get.GetChatMenuButton -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.chat.PrivateChat suspend fun TelegramBot.getChatMenuButton( - chatId: ChatId + chatId: IdChatIdentifier ) = execute(GetChatMenuButton(chatId)) suspend fun TelegramBot.getChatMenuButton( diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt index af5a5bdfae..36126639da 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatMember.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.BanChatMember -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.TelegramDate import dev.inmo.tgbotapi.types.UserId @@ -24,7 +24,7 @@ suspend fun TelegramBot.banChatMember( ) = banChatMember(chat.id, userId, untilDate, revokeMessages) suspend fun TelegramBot.banChatMember( - chatId: ChatId, + chatId: IdChatIdentifier, user: User, untilDate: TelegramDate? = null, revokeMessages: Boolean? = null diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt index e71701fce7..f7ae9f6dba 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/BanChatSenderChat.kt @@ -2,22 +2,22 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.BanChatSenderChat -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.banChatSenderChat( chatId: ChatIdentifier, - senderChatId: ChatId + senderChatId: IdChatIdentifier ) = execute(BanChatSenderChat(chatId, senderChatId)) suspend fun TelegramBot.banChatSenderChat( chat: PublicChat, - senderChatId: ChatId + senderChatId: IdChatIdentifier ) = banChatSenderChat(chat.id, senderChatId) suspend fun TelegramBot.banChatSenderChat( - chatId: ChatId, + chatId: IdChatIdentifier, senderChat: PublicChat ) = banChatSenderChat(chatId, senderChat.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt index 9f0f28a66c..ea407e6674 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/GetChatMember.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.GetChatMember -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.chat.PublicChat @@ -19,7 +19,7 @@ suspend fun TelegramBot.getChatMember( ) = getChatMember(chat.id, userId) suspend fun TelegramBot.getChatMember( - chatId: ChatId, + chatId: IdChatIdentifier, user: User ) = getChatMember(chatId, user.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt index df88b9a3b0..b13200feb8 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.PromoteChatMember -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.TelegramDate import dev.inmo.tgbotapi.types.UserId @@ -80,7 +80,7 @@ suspend fun TelegramBot.promoteChatMember( ) suspend fun TelegramBot.promoteChatMember( - chatId: ChatId, + chatId: IdChatIdentifier, user: User, untilDate: TelegramDate? = null, isAnonymous: Boolean? = null, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt index ceb513b90d..10ef93a219 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/RestrictChatMember.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.RestrictChatMember -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.TelegramDate import dev.inmo.tgbotapi.types.UserId @@ -25,7 +25,7 @@ suspend fun TelegramBot.restrictChatMember( ) = restrictChatMember(chat.id, userId, untilDate, permissions) suspend fun TelegramBot.restrictChatMember( - chatId: ChatId, + chatId: IdChatIdentifier, user: User, untilDate: TelegramDate? = null, permissions: ChatPermissions = ChatPermissions() diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt index 3936721b26..424fa346af 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/SetChatAdministratorCustomTitle.kt @@ -2,13 +2,13 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.SetChatAdministratorCustomTitle -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.chat.PublicChat import dev.inmo.tgbotapi.types.chat.User suspend fun TelegramBot.setChatAdministratorCustomTitle( - chatId: ChatId, + chatId: IdChatIdentifier, userId: UserId, customTitle: String ) = execute(SetChatAdministratorCustomTitle(chatId, userId, customTitle)) @@ -20,7 +20,7 @@ suspend fun TelegramBot.setChatAdministratorCustomTitle( ) = setChatAdministratorCustomTitle(chat.id, userId, customTitle) suspend fun TelegramBot.setChatAdministratorCustomTitle( - chatId: ChatId, + chatId: IdChatIdentifier, user: User, customTitle: String ) = setChatAdministratorCustomTitle(chatId, user.id, customTitle) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt index be8b798fb5..2806a3ab50 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatMember.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.UnbanChatMember -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.UserId import dev.inmo.tgbotapi.types.chat.PublicChat @@ -21,7 +21,7 @@ suspend fun TelegramBot.unbanChatMember( ) = unbanChatMember(chat.id, userId, onlyIfBanned) suspend fun TelegramBot.unbanChatMember( - chatId: ChatId, + chatId: IdChatIdentifier, user: User, onlyIfBanned: Boolean? = null ) = unbanChatMember(chatId, user.id, onlyIfBanned) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt index b6362f07cc..cc3975e38f 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/UnbanChatSenderChat.kt @@ -2,22 +2,22 @@ package dev.inmo.tgbotapi.extensions.api.chat.members import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.members.UnbanChatSenderChat -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.PublicChat suspend fun TelegramBot.unbanChatSenderChat( chatId: ChatIdentifier, - senderChatId: ChatId + senderChatId: IdChatIdentifier ) = execute(UnbanChatSenderChat(chatId, senderChatId)) suspend fun TelegramBot.unbanChatSenderChat( chat: PublicChat, - senderChatId: ChatId + senderChatId: IdChatIdentifier ) = unbanChatSenderChat(chat.id, senderChatId) suspend fun TelegramBot.unbanChatSenderChat( - chatId: ChatId, + chatId: IdChatIdentifier, senderChat: PublicChat ) = unbanChatSenderChat(chatId, senderChat.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt index 78e0cbcb53..81cddf247e 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/modify/SetChatMenuButton.kt @@ -2,12 +2,12 @@ package dev.inmo.tgbotapi.extensions.api.chat.modify import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.chat.modify.SetChatMenuButton -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.MenuButton import dev.inmo.tgbotapi.types.chat.PrivateChat suspend fun TelegramBot.setChatMenuButton( - chatId: ChatId, + chatId: IdChatIdentifier, menuButton: MenuButton ) = execute(SetChatMenuButton(chatId, menuButton)) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt index 0677efd4c7..8231aa89d0 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/GetGameHighScoresByChat.kt @@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.message.content.GameContent suspend fun TelegramBot.getGameScore( userId: UserId, - chatId: ChatId, + chatId: IdChatIdentifier, messageId: MessageId ) = execute( GetGameHighScoresByChat(userId, chatId, messageId) @@ -18,7 +18,7 @@ suspend fun TelegramBot.getGameScore( suspend fun TelegramBot.getGameScore( user: CommonUser, - chatId: ChatId, + chatId: IdChatIdentifier, messageId: MessageId ) = getGameScore( user.id, chatId, messageId diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt index fb25c3eeb8..6976858703 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/games/SetGameScoreByChatId.kt @@ -11,7 +11,7 @@ import dev.inmo.tgbotapi.types.message.content.GameContent suspend fun TelegramBot.setGameScore( userId: UserId, score: Long, - chatId: ChatId, + chatId: IdChatIdentifier, messageId: MessageId, force: Boolean = false, disableEditMessage: Boolean = false @@ -22,7 +22,7 @@ suspend fun TelegramBot.setGameScore( suspend fun TelegramBot.setGameScore( user: CommonUser, score: Long, - chatId: ChatId, + chatId: IdChatIdentifier, messageId: MessageId, force: Boolean = false, disableEditMessage: Boolean = false diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/RepliesWithChatsAndMessages.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/RepliesWithChatsAndMessages.kt index 02c5e02555..87e90fe760 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/RepliesWithChatsAndMessages.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/RepliesWithChatsAndMessages.kt @@ -42,7 +42,7 @@ import kotlin.jvm.JvmName * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, phoneNumber: String, firstName: String, @@ -70,7 +70,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, contact: Contact, threadId: MessageThreadId? = null, @@ -97,7 +97,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.replyWithDice( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animationType: DiceAnimationType? = null, threadId: MessageThreadId? = null, @@ -112,7 +112,7 @@ suspend inline fun TelegramBot.replyWithDice( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animationType: DiceAnimationType, threadId: MessageThreadId? = null, @@ -130,7 +130,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, latitude: Double, longitude: Double, @@ -156,7 +156,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, location: StaticLocation, threadId: MessageThreadId? = null, @@ -183,7 +183,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, text: String, parseMode: ParseMode? = null, @@ -211,7 +211,7 @@ suspend inline fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, entities: TextSourcesList, disableWebPagePreview: Boolean? = null, @@ -237,7 +237,7 @@ suspend inline fun TelegramBot.reply( * as a builder for that */ suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, separator: TextSource? = null, disableWebPagePreview: Boolean? = null, @@ -254,7 +254,7 @@ suspend fun TelegramBot.reply( * as a builder for that */ suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, separator: String, disableWebPagePreview: Boolean? = null, @@ -274,7 +274,7 @@ suspend fun TelegramBot.reply( * [dev.inmo.tgbotapi.extensions.utils.types.buttons.inlineKeyboard] as a builders for that param */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, latitude: Double, longitude: Double, @@ -308,7 +308,7 @@ suspend inline fun TelegramBot.reply( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, location: StaticLocation, title: String, @@ -341,7 +341,7 @@ suspend inline fun TelegramBot.reply( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, venue: Venue, threadId: MessageThreadId? = null, @@ -364,7 +364,7 @@ suspend inline fun TelegramBot.reply( // Game suspend inline fun TelegramBot.replyWithGame( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, gameShortName: String, threadId: MessageThreadId? = null, @@ -377,7 +377,7 @@ suspend inline fun TelegramBot.replyWithGame( ) suspend inline fun TelegramBot.replyWithGame( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, game: Game, threadId: MessageThreadId? = null, @@ -390,7 +390,7 @@ suspend inline fun TelegramBot.replyWithGame( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, game: Game, threadId: MessageThreadId? = null, @@ -404,7 +404,7 @@ suspend inline fun TelegramBot.reply( // Animation suspend inline fun TelegramBot.replyWithAnimation( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animation: InputFile, thumb: InputFile? = null, @@ -436,7 +436,7 @@ suspend inline fun TelegramBot.replyWithAnimation( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animation: AnimationFile, text: String? = null, @@ -452,7 +452,7 @@ suspend inline fun TelegramBot.reply( ) = sendAnimation(toChatId, animation, text, parseMode, duration, width, height, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.replyWithAnimation( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animation: InputFile, entities: TextSourcesList, @@ -482,7 +482,7 @@ suspend inline fun TelegramBot.replyWithAnimation( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, animation: AnimationFile, entities: TextSourcesList, @@ -500,7 +500,7 @@ suspend inline fun TelegramBot.reply( // Audio suspend inline fun TelegramBot.replyWithAudio( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, audio: InputFile, thumb: InputFile? = null, @@ -517,7 +517,7 @@ suspend inline fun TelegramBot.replyWithAudio( ) = sendAudio(toChatId, audio, thumb, text, parseMode, duration, performer, title, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, audio: AudioFile, text: String? = null, @@ -531,7 +531,7 @@ suspend inline fun TelegramBot.reply( ) = sendAudio(toChatId, audio, text, parseMode, title, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.replyWithAudio( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, audio: InputFile, thumb: InputFile? = null, @@ -547,7 +547,7 @@ suspend inline fun TelegramBot.replyWithAudio( ) = sendAudio(toChatId, audio, thumb, entities, duration, performer, title, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, audio: AudioFile, entities: TextSourcesList, @@ -563,7 +563,7 @@ suspend inline fun TelegramBot.reply( // Documents suspend inline fun TelegramBot.replyWithDocument( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, document: InputFile, thumb: InputFile? = null, @@ -578,7 +578,7 @@ suspend inline fun TelegramBot.replyWithDocument( ) = sendDocument(toChatId, document, thumb, text, parseMode, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup, disableContentTypeDetection) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, document: DocumentFile, text: String? = null, @@ -592,7 +592,7 @@ suspend inline fun TelegramBot.reply( ) = sendDocument(toChatId, document, text, parseMode, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup, disableContentTypeDetection) suspend inline fun TelegramBot.replyWithDocument( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, document: InputFile, thumb: InputFile? = null, @@ -606,7 +606,7 @@ suspend inline fun TelegramBot.replyWithDocument( ) = sendDocument(toChatId, document, thumb, entities, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup, disableContentTypeDetection) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, document: DocumentFile, entities: TextSourcesList, @@ -623,7 +623,7 @@ suspend inline fun TelegramBot.reply( @RiskFeature(rawSendingMediaGroupsWarning) suspend inline fun TelegramBot.replyWithMediaGroup( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, media: List, threadId: MessageThreadId? = null, @@ -633,7 +633,7 @@ suspend inline fun TelegramBot.replyWithMediaGroup( ) = sendMediaGroup(toChatId, media, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply) suspend inline fun TelegramBot.replyWithPlaylist( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, media: List, threadId: MessageThreadId? = null, @@ -643,7 +643,7 @@ suspend inline fun TelegramBot.replyWithPlaylist( ) = sendPlaylist(toChatId, media, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply) suspend inline fun TelegramBot.replyWithDocuments( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, media: List, threadId: MessageThreadId? = null, @@ -653,7 +653,7 @@ suspend inline fun TelegramBot.replyWithDocuments( ) = sendDocumentsGroup(toChatId, media, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply) suspend inline fun TelegramBot.replyWithGallery( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, media: List, threadId: MessageThreadId? = null, @@ -666,7 +666,7 @@ suspend inline fun TelegramBot.replyWithGallery( // Photo suspend inline fun TelegramBot.replyWithPhoto( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, fileId: InputFile, text: String? = null, @@ -679,7 +679,7 @@ suspend inline fun TelegramBot.replyWithPhoto( ) = sendPhoto(toChatId, fileId, text, parseMode, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, photo: Photo, text: String? = null, @@ -692,7 +692,7 @@ suspend inline fun TelegramBot.reply( ) = sendPhoto(toChatId, photo, text, parseMode, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, photoSize: PhotoSize, text: String? = null, @@ -706,7 +706,7 @@ suspend inline fun TelegramBot.reply( suspend inline fun TelegramBot.replyWithPhoto( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, fileId: InputFile, entities: TextSourcesList, @@ -718,7 +718,7 @@ suspend inline fun TelegramBot.replyWithPhoto( ) = sendPhoto(toChatId, fileId, entities, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, photo: Photo, entities: TextSourcesList, @@ -730,7 +730,7 @@ suspend inline fun TelegramBot.reply( ) = sendPhoto(toChatId, photo, entities, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, photoSize: PhotoSize, entities: TextSourcesList, @@ -745,7 +745,7 @@ suspend inline fun TelegramBot.reply( // Sticker suspend inline fun TelegramBot.replyWithSticker( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, sticker: InputFile, threadId: MessageThreadId? = null, @@ -756,7 +756,7 @@ suspend inline fun TelegramBot.replyWithSticker( ) = sendSticker(toChatId, sticker, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, sticker: Sticker, threadId: MessageThreadId? = null, @@ -770,7 +770,7 @@ suspend inline fun TelegramBot.reply( // Videos suspend inline fun TelegramBot.replyWithVideo( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, video: InputFile, thumb: InputFile? = null, @@ -787,7 +787,7 @@ suspend inline fun TelegramBot.replyWithVideo( ) = sendVideo(toChatId, video, thumb, text, parseMode, duration, width, height, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, video: VideoFile, text: String? = null, @@ -800,7 +800,7 @@ suspend inline fun TelegramBot.reply( ) = sendVideo(toChatId, video, text, parseMode, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.replyWithVideo( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, video: InputFile, thumb: InputFile? = null, @@ -816,7 +816,7 @@ suspend inline fun TelegramBot.replyWithVideo( ) = sendVideo(toChatId, video, thumb, entities, duration, width, height, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, video: VideoFile, entities: TextSourcesList, @@ -831,7 +831,7 @@ suspend inline fun TelegramBot.reply( // VideoNotes suspend inline fun TelegramBot.replyWithVideoNote( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, videoNote: InputFile, thumb: InputFile? = null, @@ -845,7 +845,7 @@ suspend inline fun TelegramBot.replyWithVideoNote( ) = sendVideoNote(toChatId, videoNote, thumb, duration, size, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, videoNote: VideoNoteFile, threadId: MessageThreadId? = null, @@ -859,7 +859,7 @@ suspend inline fun TelegramBot.reply( // Voice suspend inline fun TelegramBot.replyWithVoice( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, voice: InputFile, text: String? = null, @@ -873,7 +873,7 @@ suspend inline fun TelegramBot.replyWithVoice( ) = sendVoice(toChatId, voice, text, parseMode, duration, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, voice: VoiceFile, text: String? = null, @@ -887,7 +887,7 @@ suspend inline fun TelegramBot.reply( suspend inline fun TelegramBot.replyWithVoice( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, voice: InputFile, entities: TextSourcesList, @@ -900,7 +900,7 @@ suspend inline fun TelegramBot.replyWithVoice( ) = sendVoice(toChatId, voice, entities, duration, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, voice: VoiceFile, entities: TextSourcesList, @@ -919,7 +919,7 @@ suspend inline fun TelegramBot.reply( * as a builder for that */ suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, title: String, description: String, @@ -949,7 +949,7 @@ suspend inline fun TelegramBot.reply( // Polls suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, question: String, options: List, @@ -965,7 +965,7 @@ suspend inline fun TelegramBot.reply( ) = sendRegularPoll(toChatId, question, options, isAnonymous, isClosed, allowMultipleAnswers, closeInfo, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, poll: RegularPoll, isClosed: Boolean = false, @@ -982,7 +982,7 @@ suspend inline fun TelegramBot.reply( ) = sendRegularPoll(toChatId, poll, isClosed, question, options, isAnonymous, allowMultipleAnswers, closeInfo, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, question: String, options: List, @@ -1000,7 +1000,7 @@ suspend inline fun TelegramBot.reply( ) = sendQuizPoll(toChatId, question, options, correctOptionId, isAnonymous, isClosed, explanation, parseMode, closeInfo, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, quizPoll: QuizPoll, isClosed: Boolean = false, @@ -1019,7 +1019,7 @@ suspend inline fun TelegramBot.reply( ) = sendQuizPoll(toChatId, isClosed, quizPoll, question, options, correctOptionId, isAnonymous, explanation, parseMode, closeInfo, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, question: String, options: List, @@ -1036,7 +1036,7 @@ suspend inline fun TelegramBot.reply( ) = sendQuizPoll(toChatId, question, options, correctOptionId, isAnonymous, isClosed, entities, closeInfo, threadId, disableNotification, protectContent, toMessageId, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, quizPoll: QuizPoll, entities: TextSourcesList, @@ -1055,7 +1055,7 @@ suspend inline fun TelegramBot.reply( suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, poll: Poll, isClosed: Boolean = false, @@ -1106,7 +1106,7 @@ suspend inline fun TelegramBot.reply( suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, fromChatId: ChatIdentifier, messageId: MessageId, @@ -1132,7 +1132,7 @@ suspend inline fun TelegramBot.reply( ) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, fromChat: Chat, messageId: MessageId, @@ -1146,7 +1146,7 @@ suspend inline fun TelegramBot.reply( ) = reply(toChatId, toMessageId, fromChat.id, messageId, text, parseMode, threadId, disableNotification, protectContent, allowSendingWithoutReply, replyMarkup) suspend inline fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, copy: Message, text: String? = null, @@ -1159,7 +1159,7 @@ suspend inline fun TelegramBot.reply( ) = reply(toChatId, toMessageId, copy.chat.id, copy.messageId, text, parseMode, threadId, disableNotification, protectContent, allowSendingWithoutReply, replyMarkup) suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, content: MessageContent, threadId: MessageThreadId? = null, @@ -1187,7 +1187,7 @@ suspend fun TelegramBot.reply( * @see handleLiveLocation */ suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, locationsFlow: Flow, liveTimeMillis: Long = defaultLivePeriodDelayMillis, @@ -1214,7 +1214,7 @@ suspend fun TelegramBot.reply( @JvmName("replyLiveLocationWithLocationChatIdAndMessageId") @JsName("replyLiveLocationWithLocationChatIdAndMessageId") suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, locationsFlow: Flow, liveTimeMillis: Long = defaultLivePeriodDelayMillis, @@ -1243,7 +1243,7 @@ suspend fun TelegramBot.reply( @JvmName("replyLiveLocationWithLatLongChatIdAndMessageId") @JsName("replyLiveLocationWithLatLongChatIdAndMessageId") suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, locationsFlow: Flow>, liveTimeMillis: Long = defaultLivePeriodDelayMillis, @@ -1265,7 +1265,7 @@ suspend fun TelegramBot.reply( } suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, mediaFile: TelegramMediaFile, threadId: MessageThreadId? = null, @@ -1369,7 +1369,7 @@ suspend fun TelegramBot.reply( } suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, content: TextedMediaContent, text: String?, @@ -1457,7 +1457,7 @@ suspend fun TelegramBot.reply( } suspend fun TelegramBot.reply( - toChatId: ChatId, + toChatId: IdChatIdentifier, toMessageId: MessageId, content: TextedMediaContent, entities: List, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt index 87a9dd7129..3a9db0be3a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/SendActionDSL.kt @@ -9,7 +9,6 @@ import dev.inmo.tgbotapi.types.actions.* import dev.inmo.tgbotapi.types.chat.Chat import kotlinx.coroutines.* import kotlin.contracts.* -import kotlin.coroutines.coroutineContext private const val refreshTime: MilliSeconds = (botActionActualityTime - 1) * 1000L typealias TelegramBotActionCallback = suspend TelegramBot.() -> T @@ -37,7 +36,7 @@ suspend fun TelegramBot.withAction( @OptIn(ExperimentalContracts::class) suspend fun TelegramBot.withAction( - chatId: ChatId, + chatId: IdChatIdentifier, action: BotAction, block: TelegramBotActionCallback ): T { @@ -67,77 +66,77 @@ suspend fun TelegramBot.withAction( } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withTypingAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withTypingAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, TypingAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withUploadPhotoAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withUploadPhotoAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, UploadPhotoAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withRecordVideoAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withRecordVideoAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, RecordVideoAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withUploadVideoAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withUploadVideoAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, UploadVideoAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withRecordVoiceAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withRecordVoiceAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, RecordVoiceAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withUploadVoiceAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withUploadVoiceAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, UploadVoiceAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withUploadDocumentAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withUploadDocumentAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, UploadDocumentAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withFindLocationAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withFindLocationAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, FindLocationAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withRecordVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withRecordVideoNoteAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, RecordVideoNoteAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withUploadVideoNoteAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withUploadVideoNoteAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return withAction(chatId, UploadVideoNoteAction, block) } @OptIn(ExperimentalContracts::class) -suspend fun TelegramBot.withChooseStickerAction(chatId: ChatId, block: TelegramBotActionCallback) : T { +suspend fun TelegramBot.withChooseStickerAction(chatId: IdChatIdentifier, block: TelegramBotActionCallback) : T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Sends.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Sends.kt index 45df51e091..6f933f48b6 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Sends.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/Sends.kt @@ -414,7 +414,7 @@ suspend fun TelegramBot.send( * as a builder for that */ suspend fun TelegramBot.send( - chatId: ChatId, + chatId: IdChatIdentifier, title: String, description: String, payload: String, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt index 6350bb4792..641bb1a953 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendVoice.kt @@ -11,6 +11,7 @@ import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.files.VoiceFile +import dev.inmo.tgbotapi.types.threadId /** * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or @@ -22,7 +23,7 @@ suspend fun TelegramBot.sendVoice( text: String? = null, parseMode: ParseMode? = null, duration: Long? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -54,7 +55,7 @@ suspend fun TelegramBot.sendVoice( text: String? = null, parseMode: ParseMode? = null, duration: Long? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -71,7 +72,7 @@ suspend fun TelegramBot.sendVoice( voice: VoiceFile, text: String? = null, parseMode: ParseMode? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -90,7 +91,7 @@ suspend fun TelegramBot.sendVoice( voice: VoiceFile, text: String? = null, parseMode: ParseMode? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -108,7 +109,7 @@ suspend inline fun TelegramBot.sendVoice( voice: InputFile, entities: TextSourcesList, duration: Long? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -138,7 +139,7 @@ suspend inline fun TelegramBot.sendVoice( voice: InputFile, entities: TextSourcesList, duration: Long? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -154,7 +155,7 @@ suspend inline fun TelegramBot.sendVoice( chatId: ChatIdentifier, voice: VoiceFile, entities: TextSourcesList, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -171,7 +172,7 @@ suspend inline fun TelegramBot.sendVoice( chat: Chat, voice: VoiceFile, entities: TextSourcesList, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt index f6e4e4371f..8a0888298d 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/payments/SendInvoice.kt @@ -13,7 +13,7 @@ import dev.inmo.tgbotapi.types.payments.abstracts.Currency * as a builder for that */ suspend fun TelegramBot.sendInvoice( - chatId: ChatId, + chatId: IdChatIdentifier, title: String, description: String, payload: String, @@ -31,7 +31,7 @@ suspend fun TelegramBot.sendInvoice( shouldSendPhoneNumberToProvider: Boolean = false, shouldSendEmailToProvider: Boolean = false, priceDependOnShipAddress: Boolean = false, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt index 71d3202fd4..e297e56394 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/polls/SendPoll.kt @@ -11,6 +11,7 @@ import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.polls.* +import dev.inmo.tgbotapi.types.threadId /** * @param replyMarkup Some of [KeyboardMarkup]. See [dev.inmo.tgbotapi.extensions.utils.types.buttons.replyKeyboard] or @@ -24,7 +25,7 @@ suspend fun TelegramBot.sendRegularPoll( isClosed: Boolean = false, allowMultipleAnswers: Boolean = false, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -48,7 +49,7 @@ suspend fun TelegramBot.sendRegularPoll( isAnonymous: Boolean = poll.isAnonymous, allowMultipleAnswers: Boolean = poll.allowMultipleAnswers, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -68,7 +69,7 @@ suspend fun TelegramBot.sendRegularPoll( isClosed: Boolean = false, allowMultipleAnswers: Boolean = false, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -91,7 +92,7 @@ suspend fun TelegramBot.sendRegularPoll( isAnonymous: Boolean = poll.isAnonymous, allowMultipleAnswers: Boolean = poll.allowMultipleAnswers, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -116,7 +117,7 @@ suspend fun TelegramBot.sendQuizPoll( explanation: String? = null, parseMode: ParseMode? = null, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -142,7 +143,7 @@ suspend fun TelegramBot.sendQuizPoll( explanation: String? = null, parseMode: ParseMode? = null, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -167,7 +168,7 @@ suspend fun TelegramBot.sendQuizPoll( explanation: String? = null, parseMode: ParseMode? = null, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -192,7 +193,7 @@ suspend fun TelegramBot.sendQuizPoll( explanation: String? = null, parseMode: ParseMode? = null, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -216,7 +217,7 @@ suspend inline fun TelegramBot.sendQuizPoll( isClosed: Boolean = false, entities: TextSourcesList, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -241,7 +242,7 @@ suspend inline fun TelegramBot.sendQuizPoll( isClosed: Boolean = false, entities: TextSourcesList, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -265,7 +266,7 @@ suspend inline fun TelegramBot.sendQuizPoll( isAnonymous: Boolean = quizPoll.isAnonymous, entities: TextSourcesList, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chatId.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, @@ -289,7 +290,7 @@ suspend inline fun TelegramBot.sendQuizPoll( isAnonymous: Boolean = quizPoll.isAnonymous, entities: TextSourcesList, closeInfo: ScheduledCloseInfo? = null, - threadId: MessageThreadId? = null, + threadId: MessageThreadId? = chat.id.threadId, disableNotification: Boolean = false, protectContent: Boolean = false, replyToMessageId: MessageId? = null, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt index 5e8fb31d1f..0d28e820de 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatSenderRequest.kt @@ -2,9 +2,8 @@ package dev.inmo.tgbotapi.requests.chat.abstracts import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest -import dev.inmo.tgbotapi.types.ChatId -import dev.inmo.tgbotapi.types.UserId +import dev.inmo.tgbotapi.types.IdChatIdentifier interface ChatSenderRequest : ChatRequest, SimpleRequest { - val senderChatId: ChatId + val senderChatId: IdChatIdentifier } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt index 00d0b359e5..913c083500 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChat.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.requests.chat.get import dev.inmo.tgbotapi.abstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.ChatIdWithThreadId import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.chat.ExtendedChatSerializer import dev.inmo.tgbotapi.types.chat.ExtendedChat @@ -14,8 +15,12 @@ data class GetChat( override val chatId: ChatIdentifier ): ChatRequest, SimpleRequest { override fun method(): String = "getChat" - override val resultDeserializer: DeserializationStrategy - get() = ExtendedChatSerializer + @Transient + override val resultDeserializer: DeserializationStrategy = if (chatId is ChatIdWithThreadId) { + ExtendedChatSerializer.BasedOnForumThread(chatId.threadId) + } else { + ExtendedChatSerializer + } override val requestSerializer: SerializationStrategy<*> get() = serializer() } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatSenderChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatSenderChat.kt index 6587275422..1832c60fae 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatSenderChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/BanChatSenderChat.kt @@ -13,7 +13,7 @@ data class BanChatSenderChat( @SerialName(chatIdField) override val chatId: ChatIdentifier, @SerialName(senderChatIdField) - override val senderChatId: ChatId + override val senderChatId: IdChatIdentifier ) : ChatSenderRequest { override fun method(): String = "banChatSenderChat" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/UnbanChatSenderChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/UnbanChatSenderChat.kt index 8b43d5f038..324b92a44a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/UnbanChatSenderChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/UnbanChatSenderChat.kt @@ -13,7 +13,7 @@ data class UnbanChatSenderChat( @SerialName(chatIdField) override val chatId: ChatIdentifier, @SerialName(senderChatIdField) - override val senderChatId: ChatId + override val senderChatId: IdChatIdentifier ) : ChatSenderRequest { override fun method(): String = "unbanChatSenderChat" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt index 1f751a54f2..1d6af75973 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/GetGameHighScoresByChat.kt @@ -10,7 +10,7 @@ data class GetGameHighScoresByChat ( @SerialName(userIdField) override val userId: UserId, @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: IdChatIdentifier, @SerialName(messageIdField) override val messageId: MessageId ) : GetGameHighScores, MessageAction { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt index 3b1b92155c..cb2cf64cb6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/games/SetGameScoreByChatId.kt @@ -12,7 +12,7 @@ data class SetGameScoreByChatId ( @SerialName(scoreField) override val score: Long, @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: IdChatIdentifier, @SerialName(messageIdField) override val messageId: MessageId, @SerialName(forceField) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt index 6273f29443..010ef191b8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/payments/SendInvoice.kt @@ -22,7 +22,7 @@ private val invoiceMessageSerializer: DeserializationStrategy) : IdChatIdentifier { + override val chatId: Identifier + get() = chatIdWithThreadId.first + override val threadId: MessageThreadId + get() = chatIdWithThreadId.second + + constructor(chatId: Identifier, threadId: MessageThreadId): this(chatId to threadId) +} + +val ChatIdentifier.threadId: MessageThreadId? + get() = (this as? IdChatIdentifier) ?.threadId /** * https://core.telegram.org/bots/api#formatting-options @@ -39,16 +64,16 @@ val UserId.userLink: String val User.link: String get() = id.userLink -typealias UserId = ChatId +typealias UserId = IdChatIdentifier -fun Identifier.toChatId(): ChatId = ChatId(this) -fun Int.toChatId(): ChatId = toLong().toChatId() -fun Byte.toChatId(): ChatId = toLong().toChatId() +fun Identifier.toChatId(): IdChatIdentifier = ChatId(this) +fun Int.toChatId(): IdChatIdentifier = toLong().toChatId() +fun Byte.toChatId(): IdChatIdentifier = toLong().toChatId() @Serializable(ChatIdentifierSerializer::class) data class Username( val username: String -) : ChatIdentifier() { +) : ChatIdentifier { val usernameWithoutAt get() = username.dropWhile { it == '@' } @@ -80,7 +105,7 @@ object ChatIdentifierSerializer : KSerializer { override fun serialize(encoder: Encoder, value: ChatIdentifier) { when (value) { - is ChatId -> encoder.encodeLong(value.chatId) + is IdChatIdentifier -> encoder.encodeLong(value.chatId) is Username -> encoder.encodeString(value.username) } } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/RequestError.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/RequestError.kt index 4a53843390..4f1bc24aff 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/RequestError.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/RequestError.kt @@ -14,7 +14,7 @@ data class RetryAfterError( } data class MigrateChatId( - val newChatId: ChatId + val newChatId: IdChatIdentifier ) : RequestError() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ResponseParametersRaw.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ResponseParametersRaw.kt index 71c837a1e9..f1e789b99f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ResponseParametersRaw.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ResponseParametersRaw.kt @@ -6,7 +6,7 @@ import kotlinx.serialization.* @Serializable data class ResponseParametersRaw( @SerialName("migrate_to_chat_id") - private val migrateToChatId: ChatId? = null, + private val migrateToChatId: IdChatIdentifier? = null, @SerialName("retry_after") private val retryAfter: Seconds? = null ) { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt index 258604a209..41d015e32a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt @@ -49,5 +49,5 @@ sealed interface AbleToAddInAttachmentMenuChat : Chat { @Serializable(PreviewChatSerializer::class) @ClassCastsIncluded sealed interface Chat { - val id: ChatId + val id: IdChatIdentifier } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt index c211b909ba..2d2c175153 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ChatSerializers.kt @@ -93,9 +93,9 @@ object PreviewChatSerializer : KSerializer { } @RiskFeature -object ExtendedChatSerializer : KSerializer { +sealed class ExtendedChatSerializer : KSerializer { @OptIn(InternalSerializationApi::class) - override val descriptor: SerialDescriptor = buildSerialDescriptor("PreviewChatSerializer", PolymorphicKind.OPEN) + override val descriptor: SerialDescriptor = buildSerialDescriptor("ExtendedChatSerializer", PolymorphicKind.OPEN) override fun deserialize(decoder: Decoder): ExtendedChat { val decodedJson = JsonObject.serializer().deserialize(decoder) @@ -131,6 +131,22 @@ object ExtendedChatSerializer : KSerializer { is UnknownExtendedChat -> JsonObject.serializer().serialize(encoder, value.rawJson) } } + + class BasedOnForumThread(private val threadId: MessageThreadId) : ExtendedChatSerializer() { + override fun deserialize(decoder: Decoder): ExtendedChat { + return super.deserialize(decoder).let { + if (it is ExtendedForumChatImpl) { + it.copy( + id = (it.id as? ChatIdWithThreadId) ?: ChatIdWithThreadId(it.id.chatId, threadId) + ) + } else { + it + } + } + } + } + + companion object : ExtendedChatSerializer() } @RiskFeature diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt index 719d28c025..2ab307b473 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Extended.kt @@ -10,7 +10,7 @@ import kotlinx.serialization.json.JsonObject @Serializable data class ExtendedChannelChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) @@ -27,13 +27,13 @@ data class ExtendedChannelChatImpl( @Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class) override val pinnedMessage: Message? = null, @SerialName(linkedChatIdField) - override val linkedGroupChatId: ChatId? = null + override val linkedGroupChatId: IdChatIdentifier? = null ) : ExtendedChannelChat @Serializable data class ExtendedGroupChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(photoField) @@ -52,7 +52,7 @@ data class ExtendedGroupChatImpl( @Serializable data class ExtendedPrivateChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(photoField) override val chatPhoto: ChatPhoto? = null, @SerialName(usernameField) @@ -78,7 +78,7 @@ typealias ExtendedUser = ExtendedPrivateChatImpl @Serializable data class ExtendedSupergroupChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) @@ -103,7 +103,7 @@ data class ExtendedSupergroupChatImpl( @SerialName(canSetStickerSetField) override val canSetStickerSet: Boolean = false, @SerialName(linkedChatIdField) - override val linkedChannelChatId: ChatId? = null, + override val linkedChannelChatId: IdChatIdentifier? = null, @SerialName(locationField) override val location: ChatLocation? = null, @SerialName(joinToSendMessagesField) @@ -115,7 +115,7 @@ data class ExtendedSupergroupChatImpl( @Serializable data class ExtendedForumChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) @@ -140,7 +140,7 @@ data class ExtendedForumChatImpl( @SerialName(canSetStickerSetField) override val canSetStickerSet: Boolean = false, @SerialName(linkedChatIdField) - override val linkedChannelChatId: ChatId? = null, + override val linkedChannelChatId: IdChatIdentifier? = null, @SerialName(locationField) override val location: ChatLocation? = null, @SerialName(joinToSendMessagesField) @@ -170,7 +170,7 @@ data class ExtendedBot( } data class UnknownExtendedChat( - override val id: ChatId, + override val id: IdChatIdentifier, val raw: String, val rawJson: JsonObject ) : ExtendedChat { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt index 0f68e43802..f3e5cf61ca 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/ExtendedAbstracts.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.Serializable @Serializable(ExtendedChatSerializer::class) sealed interface ExtendedChannelChat : ChannelChat, ExtendedPublicChat, ExtendedChatWithUsername { - val linkedGroupChatId: ChatId? + val linkedGroupChatId: IdChatIdentifier? } @Serializable(ExtendedChatSerializer::class) @@ -38,7 +38,7 @@ sealed interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat, Ext val slowModeDelay: Long? val stickerSetName: StickerSetName? val canSetStickerSet: Boolean - val linkedChannelChatId: ChatId? + val linkedChannelChatId: IdChatIdentifier? val location: ChatLocation? /** @@ -53,7 +53,7 @@ sealed interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat, Ext } @Serializable(ExtendedChatSerializer::class) -sealed interface ExtendedForumChat : ExtendedSupergroupChat +sealed interface ExtendedForumChat : ExtendedSupergroupChat, ForumChat @Serializable(ExtendedChatSerializer::class) sealed interface ExtendedChat : Chat { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt index 3af9d12774..5bd1fc3037 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt @@ -10,7 +10,7 @@ import kotlinx.serialization.Serializable @Serializable data class GroupChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String ) : GroupChat @@ -18,7 +18,7 @@ data class GroupChatImpl( @Serializable data class PrivateChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(usernameField) override val username: Username? = null, @SerialName(firstNameField) @@ -30,7 +30,7 @@ data class PrivateChatImpl( @Serializable data class SupergroupChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) @@ -40,7 +40,7 @@ data class SupergroupChatImpl( @Serializable data class ForumChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) @@ -50,7 +50,7 @@ data class ForumChatImpl( @Serializable data class ChannelChatImpl( @SerialName(idField) - override val id: ChatId, + override val id: IdChatIdentifier, @SerialName(titleField) override val title: String, @SerialName(usernameField) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt index 5e9e9f4f01..87001ee2ca 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/UnknownChatType.kt @@ -1,10 +1,10 @@ package dev.inmo.tgbotapi.types.chat -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import kotlinx.serialization.json.JsonObject data class UnknownChatType( - override val id: ChatId, + override val id: IdChatIdentifier, val raw: String, val rawJson: JsonObject ) : Chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/GroupChatCreated.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/GroupChatCreated.kt index 4ac21f5771..ecf55156f5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/GroupChatCreated.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/GroupChatCreated.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent class GroupChatCreated( - val migratedTo: ChatId? + val migratedTo: IdChatIdentifier? ): GroupEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroup.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroup.kt index 276deeb0e1..39a2086132 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroup.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroup.kt @@ -1,11 +1,11 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent /** * This event is sent when a group is converted to a supergroup. */ data class MigratedToSupergroup( - val migratedFrom: ChatId + val migratedFrom: IdChatIdentifier ): SupergroupEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/SupergroupChatCreated.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/SupergroupChatCreated.kt index 31830380cb..c3cc3a95c7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/SupergroupChatCreated.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/SupergroupChatCreated.kt @@ -1,8 +1,8 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent class SupergroupChatCreated( - val migratedFrom: ChatId? + val migratedFrom: IdChatIdentifier? ): SupergroupEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index 2e63c28a71..5a98fdf863 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -81,8 +81,8 @@ internal data class RawMessage( private val group_chat_created: Boolean = false, private val supergroup_chat_created: Boolean = false, private val channel_chat_created: Boolean = false, - private val migrate_to_chat_id: ChatId? = null, - private val migrate_from_chat_id: ChatId? = null, + private val migrate_to_chat_id: IdChatIdentifier? = null, + private val migrate_from_chat_id: IdChatIdentifier? = null, private val pinned_message: RawMessage? = null, private val invoice: Invoice? = null, private val dice: Dice? = null, @@ -286,9 +286,17 @@ internal data class RawMessage( media_group_id ) is ForumChat -> if (messageThreadId != null) { + val chatId = ChatIdWithThreadId( + chat.id.chatId, + messageThreadId + ) + val actualForumChat = when (chat) { + is ExtendedForumChatImpl -> chat.copy(id = chatId) + is ForumChatImpl -> chat.copy(id = chatId) + } when (sender_chat) { is ChannelChat -> FromChannelForumContentMessageImpl( - chat, + actualForumChat, sender_chat, messageId, messageThreadId, @@ -304,7 +312,7 @@ internal data class RawMessage( media_group_id ) is GroupChat -> AnonymousForumContentMessageImpl( - chat, + actualForumChat, messageId, messageThreadId, date.asDate, @@ -319,7 +327,7 @@ internal data class RawMessage( media_group_id ) null -> CommonForumContentMessageImpl( - chat, + actualForumChat, messageId, messageThreadId, from ?: error("It is expected that in messages from non anonymous users and channels user must be specified"), diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/ChatIdentifierWithThreadId.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/ChatIdentifierWithThreadId.kt index 5d796cab28..d74d88de2d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/ChatIdentifierWithThreadId.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/ChatIdentifierWithThreadId.kt @@ -1,19 +1,18 @@ package dev.inmo.tgbotapi.utils.extensions -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.MessageThreadId import dev.inmo.tgbotapi.types.message.abstracts.Message -import dev.inmo.tgbotapi.utils.extensions.ChatIdWithThreadId.ByPair import kotlinx.serialization.Serializable import kotlin.Pair import kotlin.jvm.JvmInline /** - * Union to keep both [ChatId] and optionally [MessageThreadId] as an identifier of target for messages sending and + * Union to keep both [IdChatIdentifier] and optionally [MessageThreadId] as an identifier of target for messages sending and * other information */ sealed interface ChatIdWithThreadId { - val chatId: ChatId + val chatId: IdChatIdentifier val threadId: MessageThreadId? /** @@ -23,14 +22,14 @@ sealed interface ChatIdWithThreadId { value class ByMessage( val sourceMessage: Message ) : ChatIdWithThreadId { - override val chatId: ChatId + override val chatId: IdChatIdentifier get() = sourceMessage.chat.id override val threadId: MessageThreadId? get() = sourceMessage.threadIdOrNull } /** - * [Serializable] variant of [ChatIdWithThreadId] based on [Pair] of target [ChatId] and [MessageThreadId] + * [Serializable] variant of [ChatIdWithThreadId] based on [Pair] of target [IdChatIdentifier] and [MessageThreadId] * * @see invoke * @see serializable @@ -38,9 +37,9 @@ sealed interface ChatIdWithThreadId { @Serializable @JvmInline value class ByPair( - val pair: Pair + val pair: Pair ) : ChatIdWithThreadId { - override val chatId: ChatId + override val chatId: IdChatIdentifier get() = pair.first override val threadId: MessageThreadId? get() = pair.second @@ -61,7 +60,7 @@ sealed interface ChatIdWithThreadId { /** * Creates [ByPair] variant of [ChatIdWithThreadId] using incoming [pair] */ - inline fun serializable(pair: Pair) = ByPair(pair) + inline fun serializable(pair: Pair) = ByPair(pair) } } /** diff --git a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroupTest.kt b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroupTest.kt index 4c243155a3..e771587cfc 100644 --- a/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroupTest.kt +++ b/tgbotapi.core/src/commonTest/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MigratedToSupergroupTest.kt @@ -3,13 +3,11 @@ package dev.inmo.tgbotapi.types.message.ChatEvents import dev.inmo.tgbotapi.TestsJsonFormat import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate import dev.inmo.tgbotapi.extensions.utils.asMigratedToSupergroup -import dev.inmo.tgbotapi.extensions.utils.asSupergroupChatCreated import dev.inmo.tgbotapi.extensions.utils.asSupergroupEventMessage -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.update.abstracts.UpdateDeserializationStrategy import kotlin.test.Test import kotlin.test.assertEquals -import kotlin.test.assertIs import kotlin.test.fail @@ -47,6 +45,6 @@ class MigratedToSupergroupTest { val data = message.data.asSupergroupEventMessage() ?: fail("message should be of SupergroupEventMessage subtype") val event = data.chatEvent.asMigratedToSupergroup() ?: fail("event should be of SupergroupChatCreated subtype") - assertEquals(ChatId(57005), event.migratedFrom) + assertEquals(IdChatIdentifier(57005), event.migratedFrom) } } diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt index f2885049cf..2964fe0f57 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/Message.kt @@ -160,10 +160,10 @@ inline val Message.supergroup_chat_created: Boolean inline val Message.channel_chat_created: Boolean get() = asChatEventMessage() ?.chatEvent is ChannelChatCreated @RiskFeature(RawFieldsUsageWarning) -inline val Message.migrate_to_chat_id: ChatId? +inline val Message.migrate_to_chat_id: IdChatIdentifier? get() = asChatEventMessage() ?.chatEvent ?.asGroupChatCreated() ?.migratedTo @RiskFeature(RawFieldsUsageWarning) -inline val Message.migrate_from_chat_id: ChatId? +inline val Message.migrate_from_chat_id: IdChatIdentifier? get() = asChatEventMessage() ?.chatEvent ?.let { it ?.asSupergroupChatCreated() ?.migratedFrom ?: it ?.asMigratedToSupergroup() ?.migratedFrom } diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt index a86f1c8a41..493870f3e0 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/formatting/StringFormatting.kt @@ -200,7 +200,7 @@ infix fun String.mention(parseMode: ParseMode): String = when (parseMode) { is MarkdownV2 -> mentionMarkdownV2() } -infix fun Pair.mention(parseMode: ParseMode): String = when (parseMode) { +infix fun Pair.mention(parseMode: ParseMode): String = when (parseMode) { is HTML -> first.textMentionHTML(second) is Markdown -> first.textMentionMarkdown(second) is MarkdownV2 -> first.textMentionMarkdownV2(second) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt index bf415ce45e..8c841836f5 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/UpdatesChatFilters.kt @@ -1,16 +1,16 @@ package dev.inmo.tgbotapi.extensions.utils.updates -import dev.inmo.tgbotapi.types.ChatId +import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.chat.Chat import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filter /** - * [Flow.filter] incoming [BaseMessageUpdate]s by their [ChatId] + * [Flow.filter] incoming [BaseMessageUpdate]s by their [IdChatIdentifier] */ -fun Flow.filterBaseMessageUpdatesByChatId(chatId: ChatId): Flow = filter { it.data.chat.id == chatId } +fun Flow.filterBaseMessageUpdatesByChatId(chatId: IdChatIdentifier): Flow = filter { it.data.chat.id == chatId } /** - * [Flow.filter] incoming [BaseMessageUpdate]s by their [ChatId] using [Chat.id] of [chat] + * [Flow.filter] incoming [BaseMessageUpdate]s by their [IdChatIdentifier] using [Chat.id] of [chat] */ fun Flow.filterBaseMessageUpdatesByChat(chat: Chat): Flow = filterBaseMessageUpdatesByChatId(chat.id)