diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index 7df8861f78..cc50762110 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -24805,6 +24805,27 @@ public final class dev/inmo/tgbotapi/types/message/PrivateForumContentMessageImp public fun toString ()Ljava/lang/String; } +public final class dev/inmo/tgbotapi/types/message/PrivateForumEventMessage : dev/inmo/tgbotapi/types/message/abstracts/ChatEventMessage { + public synthetic fun (JLdev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent;DLkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1-APLFQys ()J + public final fun component2 ()Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat; + public final fun component3 ()Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent; + public final fun component4-Wg0KzQs ()D + public final fun copy-pLZ1Az8 (JLdev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent;D)Ldev/inmo/tgbotapi/types/message/PrivateForumEventMessage; + public static synthetic fun copy-pLZ1Az8$default (Ldev/inmo/tgbotapi/types/message/PrivateForumEventMessage;JLdev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent;DILjava/lang/Object;)Ldev/inmo/tgbotapi/types/message/PrivateForumEventMessage; + public fun equals (Ljava/lang/Object;)Z + public fun getBusinessConnectionId-nXr5wdE ()Ljava/lang/String; + public synthetic fun getChat ()Ldev/inmo/tgbotapi/types/chat/PreviewChat; + public fun getChat ()Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat; + public synthetic fun getChatEvent ()Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent; + public fun getChatEvent ()Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent; + public fun getDate-Wg0KzQs ()D + public fun getMessageId-APLFQys ()J + public fun getMetaInfo-fV8YnZ8 ()Lkotlin/Triple; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + public final class dev/inmo/tgbotapi/types/message/RawMessageEntity { public static final field Companion Ldev/inmo/tgbotapi/types/message/RawMessageEntity$Companion; public synthetic fun (Ljava/lang/String;IILjava/lang/String;Ldev/inmo/tgbotapi/types/chat/User;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateForumEventMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateForumEventMessage.kt new file mode 100644 index 0000000000..208deb86ce --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateForumEventMessage.kt @@ -0,0 +1,17 @@ +package dev.inmo.tgbotapi.types.message + +import korlibs.time.DateTime +import dev.inmo.tgbotapi.types.MessageId +import dev.inmo.tgbotapi.types.chat.PreviewPrivateChat +import dev.inmo.tgbotapi.types.chat.PreviewPrivateForumChat +import dev.inmo.tgbotapi.types.chat.PrivateChat +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.PrivateForumEvent +import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage + +data class PrivateForumEventMessage( + override val messageId: MessageId, + override val chat: PreviewPrivateForumChat, + override val chatEvent: T, + override val date: DateTime +) : ChatEventMessage 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 e9cb9574f1..6bde6215ff 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 @@ -380,12 +380,37 @@ internal data class RawMessage( chatEvent as? ChannelEvent ?: throwWrongChatEvent(ChannelEvent::class, chatEvent), date.asDate ) - is PreviewPrivateChat -> PrivateEventMessage( - messageId, - chat, - chatEvent as? PrivateEvent ?: throwWrongChatEvent(PrivateEvent::class, chatEvent), - date.asDate - ) + is PreviewPrivateChat -> if (chat is PrivateForumChat || is_topic_message == true || messageThreadId != null) { + PrivateEventMessage( + messageId, + if (chat is PrivateForumChat) { + chat + } else { + PrivateForumChatImpl( + id = if (messageThreadId == null) { + chat.id + } else { + ChatIdWithThreadId( + chat.id.chatId, + chat.id.threadId ?: messageThreadId + ) + }, + username = chat.username, + firstName = chat.firstName, + lastName = chat.lastName + ) + }, + chatEvent as? PrivateEvent ?: throwWrongChatEvent(PrivateEvent::class, chatEvent), + date.asDate + ) + } else { + PrivateEventMessage( + messageId, + chat, + chatEvent as? PrivateEvent ?: throwWrongChatEvent(PrivateEvent::class, chatEvent), + date.asDate + ) + } else -> error("Expected one of the public chats, but was $chat (in extracting of chat event message)") } } ?: content?.let { content -> diff --git a/tgbotapi.utils/api/tgbotapi.utils.api b/tgbotapi.utils/api/tgbotapi.utils.api index f62f339ec3..28ee1cf10c 100644 --- a/tgbotapi.utils/api/tgbotapi.utils.api +++ b/tgbotapi.utils/api/tgbotapi.utils.api @@ -1994,6 +1994,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt { public static final fun ifPrivateForumContentMessage (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static final fun ifPrivateForumContentMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static final fun ifPrivateForumEvent (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; + public static final fun ifPrivateForumEventMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static final fun ifPrivateUserChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static final fun ifProximityAlertTriggered (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; public static final fun ifPublicChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object; @@ -2520,6 +2521,8 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt { public static final fun privateForumContentMessageOrNull (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/abstracts/PrivateForumContentMessage; public static final fun privateForumContentMessageOrThrow (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;)Ldev/inmo/tgbotapi/types/message/abstracts/PrivateForumContentMessage; public static final fun privateForumContentMessageOrThrow (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/abstracts/PrivateForumContentMessage; + public static final fun privateForumEventMessageOrNull (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/PrivateForumEventMessage; + public static final fun privateForumEventMessageOrThrow (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/PrivateForumEventMessage; public static final fun privateForumEventOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent; public static final fun privateForumEventOrThrow (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateForumEvent; public static final fun privateUserChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PrivateUserChat; diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt index 67e6b59cd0..190ea6c9f1 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCastsNew.kt @@ -307,6 +307,7 @@ import dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage import dev.inmo.tgbotapi.types.message.ForwardInfo import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.message.PrivateEventMessage +import dev.inmo.tgbotapi.types.message.PrivateForumEventMessage import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage import dev.inmo.tgbotapi.types.message.abstracts.AnonymousForumContentMessage import dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage @@ -2261,6 +2262,12 @@ public inline fun Message.groupEventMessageOrThrow(): GroupEventMessage Message.ifGroupEventMessage(block: (GroupEventMessage) -> T): T? = groupEventMessageOrNull() ?.let(block) +public inline fun Message.privateForumEventMessageOrNull(): PrivateForumEventMessage? = this as? dev.inmo.tgbotapi.types.message.PrivateForumEventMessage + +public inline fun Message.privateForumEventMessageOrThrow(): PrivateForumEventMessage = this as dev.inmo.tgbotapi.types.message.PrivateForumEventMessage + +public inline fun Message.ifPrivateForumEventMessage(block: (PrivateForumEventMessage) -> T): T? = privateForumEventMessageOrNull() ?.let(block) + public inline fun Message.commonSupergroupEventMessageOrNull(): CommonSupergroupEventMessage? = this as? dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage public inline fun Message.commonSupergroupEventMessageOrThrow(): CommonSupergroupEventMessage = this as dev.inmo.tgbotapi.types.message.CommonSupergroupEventMessage