mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-24 16:26:01 +00:00
add different business entities
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
package dev.inmo.tgbotapi.abstracts.types
|
||||
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
|
||||
interface WithBusinessConnectionId : WithOptionalBusinessConnectionId {
|
||||
override val businessConnectionId: BusinessConnectionId
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.inmo.tgbotapi.abstracts.types
|
||||
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
|
||||
interface WithOptionalBusinessConnectionId {
|
||||
val businessConnectionId: BusinessConnectionId?
|
||||
}
|
||||
@@ -585,3 +585,5 @@ const val additionalChatCountField = "additional_chat_count"
|
||||
const val unclaimedPrizeCountField = "unclaimed_prize_count"
|
||||
const val wasRefundedField = "was_refunded"
|
||||
const val isManualField = "is_manual"
|
||||
|
||||
const val businessConnectionIdField = "business_connection_id"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.tgbotapi.types.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewUser
|
||||
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
||||
@@ -13,7 +14,7 @@ import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
@Serializable
|
||||
@ClassCastsIncluded
|
||||
sealed interface BusinessConnection {
|
||||
sealed interface BusinessConnection : WithBusinessConnectionId {
|
||||
val id: BusinessConnectionId
|
||||
val user: PreviewUser
|
||||
val userChatId: ChatId
|
||||
@@ -21,6 +22,9 @@ sealed interface BusinessConnection {
|
||||
val canReply: Boolean
|
||||
val isEnabled: Boolean
|
||||
|
||||
override val businessConnectionId: BusinessConnectionId
|
||||
get() = id
|
||||
|
||||
@Serializable
|
||||
data class Enabled(
|
||||
@SerialName(idField)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.inmo.tgbotapi.types.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithOptionalBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.chatField
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class BusinessMessagesDeleted(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(chatField)
|
||||
val chat: PreviewChat,
|
||||
@SerialName(messageIdField)
|
||||
val messageId: MessageId
|
||||
) : WithBusinessConnectionId
|
||||
@@ -1,10 +1,12 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewPrivateChat
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
interface BusinessContentMessage<T: MessageContent> : PossiblySentViaBotCommonMessage<T>, FromUserMessage {
|
||||
interface BusinessContentMessage<T: MessageContent> : PossiblySentViaBotCommonMessage<T>, FromUserMessage,
|
||||
WithBusinessConnectionId {
|
||||
override val chat: PreviewPrivateChat
|
||||
override val businessConnectionId: BusinessConnectionId
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import kotlinx.serialization.encoding.Encoder
|
||||
import kotlin.jvm.JvmInline
|
||||
|
||||
@ClassCastsIncluded(excludeRegex = ".*Impl")
|
||||
interface Message : WithPreviewChatAndMessageId {
|
||||
interface Message : WithPreviewChatAndMessageId, PossiblyBusinessMessage {
|
||||
val date: DateTime
|
||||
val metaInfo: MetaInfo
|
||||
get() = MetaInfo(chat.id, messageId)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithOptionalBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
|
||||
interface PossiblyBusinessMessage : Message {
|
||||
val businessConnectionId: BusinessConnectionId?
|
||||
interface PossiblyBusinessMessage : WithOptionalBusinessConnectionId {
|
||||
override val businessConnectionId: BusinessConnectionId?
|
||||
get() = null
|
||||
}
|
||||
@@ -3,11 +3,15 @@ package dev.inmo.tgbotapi.types.update
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
|
||||
data class BusinessMessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: BusinessContentMessage<*>
|
||||
) : BaseSentMessageUpdate {
|
||||
override fun copy(newData: BusinessContentMessage<*>) = copy(updateId, newData)
|
||||
/**
|
||||
* @param newData Must be [BusinessContentMessage]
|
||||
*/
|
||||
override fun copy(newData: ContentMessage<*>) = copy(updateId, newData as BusinessContentMessage<*>)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessMessagesDeleted
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||
|
||||
data class DeletedBusinessMessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: BusinessMessagesDeleted
|
||||
) : Update
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
|
||||
data class EditBusinessMessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: BusinessContentMessage<*>
|
||||
) : BaseEditMessageUpdate
|
||||
@@ -7,6 +7,7 @@ import dev.inmo.tgbotapi.types.InlineQueries.query.RawInlineQuery
|
||||
import dev.inmo.tgbotapi.types.boosts.ChatBoostRemoved
|
||||
import dev.inmo.tgbotapi.types.boosts.ChatBoostUpdated
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnection
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessMessagesDeleted
|
||||
import dev.inmo.tgbotapi.types.chat.ChatJoinRequest
|
||||
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
|
||||
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionsCountUpdated
|
||||
@@ -48,7 +49,12 @@ internal data class RawUpdate constructor(
|
||||
private val message_reaction_count: ChatMessageReactionsCountUpdated? = null,
|
||||
private val chat_boost: ChatBoostUpdated? = null,
|
||||
private val removed_chat_boost: ChatBoostRemoved? = null,
|
||||
private val business_connection: BusinessConnection? = null
|
||||
private val business_connection: BusinessConnection? = null,
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val business_message: BusinessContentMessage<*>? = null,
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val edited_business_message: BusinessContentMessage<*>? = null,
|
||||
private val deleted_business_messages: BusinessMessagesDeleted? = null,
|
||||
) {
|
||||
@Transient
|
||||
private var initedUpdate: Update? = null
|
||||
@@ -81,6 +87,9 @@ internal data class RawUpdate constructor(
|
||||
chat_boost != null -> ChatBoostUpdatedUpdate(updateId, chat_boost)
|
||||
removed_chat_boost != null -> ChatBoostRemovedUpdate(updateId, removed_chat_boost)
|
||||
business_connection != null -> BusinessConnectionUpdate(updateId, business_connection)
|
||||
business_message != null -> BusinessMessageUpdate(updateId, business_message)
|
||||
edited_business_message != null -> EditBusinessMessageUpdate(updateId, edited_business_message)
|
||||
deleted_business_messages != null -> DeletedBusinessMessageUpdate(updateId, deleted_business_messages)
|
||||
else -> UnknownUpdate(
|
||||
updateId,
|
||||
raw
|
||||
|
||||
@@ -4,5 +4,10 @@ import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
|
||||
interface BaseSentMessageUpdate : BaseMessageUpdate {
|
||||
/**
|
||||
* This method copies current [BaseSentMessageUpdate] with new data from [newData]
|
||||
*
|
||||
* **THERE IS NO ANY GUARANTEE THAT THIS METHOD WILL NOT THROW ANY EXCEPTION**
|
||||
*/
|
||||
fun copy(newData: ContentMessage<*>): BaseSentMessageUpdate
|
||||
}
|
||||
|
||||
@@ -41,6 +41,9 @@ interface FlowsUpdatesFilter : UpdatesFilter {
|
||||
val chatBoostUpdatedUpdateFlow: Flow<ChatBoostUpdatedUpdate>
|
||||
val chatBoostRemovedUpdateFlow: Flow<ChatBoostRemovedUpdate>
|
||||
val businessConnectionUpdatesFlow: Flow<BusinessConnectionUpdate>
|
||||
val businessMessageUpdatesFlow: Flow<BusinessMessageUpdate>
|
||||
val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate>
|
||||
val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate>
|
||||
val unknownUpdatesFlow: Flow<UnknownUpdate>
|
||||
}
|
||||
|
||||
@@ -65,6 +68,9 @@ abstract class AbstractFlowsUpdatesFilter : FlowsUpdatesFilter {
|
||||
override val chatBoostUpdatedUpdateFlow: Flow<ChatBoostUpdatedUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val chatBoostRemovedUpdateFlow: Flow<ChatBoostRemovedUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val businessConnectionUpdatesFlow: Flow<BusinessConnectionUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val businessMessageUpdatesFlow: Flow<BusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user