1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-14 13:55:27 +00:00
tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Abstracts.kt

62 lines
1.5 KiB
Kotlin
Raw Normal View History

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)
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)
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)
@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
}