2022-04-21 18:16:41 +00:00
|
|
|
package dev.inmo.tgbotapi.types.chat
|
|
|
|
|
2022-08-05 18:39:46 +00:00
|
|
|
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
2022-04-21 18:16:41 +00:00
|
|
|
import dev.inmo.tgbotapi.types.*
|
|
|
|
import kotlinx.serialization.Serializable
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-06 06:51:53 +00:00
|
|
|
sealed interface UsernameChat : Chat {
|
|
|
|
val username: Username?
|
|
|
|
}
|
2022-04-21 18:16:41 +00:00
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-04-21 18:16:41 +00:00
|
|
|
sealed interface PrivateChat : Chat, UsernameChat {
|
|
|
|
override val id: UserId
|
|
|
|
val firstName: String
|
|
|
|
val lastName: String
|
|
|
|
}
|
|
|
|
|
2024-04-16 13:25:18 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
|
|
|
sealed interface BusinessChat : Chat {
|
|
|
|
override val id: BusinessChatId
|
|
|
|
val original: PrivateChat
|
|
|
|
}
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-04-21 18:16:41 +00:00
|
|
|
sealed interface PublicChat : Chat {
|
|
|
|
val title: String
|
|
|
|
}
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-06 06:51:53 +00:00
|
|
|
sealed interface SuperPublicChat : PublicChat, UsernameChat
|
2022-04-21 18:16:41 +00:00
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-10 10:24:20 +00:00
|
|
|
sealed interface ChannelChat : SuperPublicChat {
|
|
|
|
override val id: ChatId
|
|
|
|
}
|
2022-04-21 18:16:41 +00:00
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-06 06:51:53 +00:00
|
|
|
sealed interface GroupChat : PublicChat
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-06 06:51:53 +00:00
|
|
|
sealed interface SupergroupChat : GroupChat, SuperPublicChat
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-11-06 06:51:53 +00:00
|
|
|
sealed interface ForumChat : SupergroupChat
|
2022-04-21 18:16:41 +00:00
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-06-21 17:06:36 +00:00
|
|
|
sealed interface PossiblyPremiumChat : Chat {
|
2022-06-21 11:34:14 +00:00
|
|
|
val isPremium: Boolean
|
|
|
|
}
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2022-06-21 11:52:16 +00:00
|
|
|
sealed interface AbleToAddInAttachmentMenuChat : Chat {
|
|
|
|
val addedToAttachmentMenu: Boolean
|
|
|
|
}
|
|
|
|
|
2023-10-11 07:38:09 +00:00
|
|
|
@Serializable(ChatSerializer::class)
|
2023-06-16 07:50:34 +00:00
|
|
|
@ClassCastsIncluded(excludeRegex = ".*Impl")
|
2022-04-21 18:16:41 +00:00
|
|
|
sealed interface Chat {
|
2022-11-10 09:56:38 +00:00
|
|
|
val id: IdChatIdentifier
|
2022-04-21 18:16:41 +00:00
|
|
|
}
|