1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-01 23:45:25 +00:00
tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/Impls.kt

117 lines
3.6 KiB
Kotlin
Raw Normal View History

2022-04-21 18:16:41 +00:00
package dev.inmo.tgbotapi.types.chat
2023-12-24 13:25:41 +00:00
import dev.inmo.micro_utils.language_codes.IetfLang
import dev.inmo.micro_utils.language_codes.IetfLangSerializer
2022-04-21 18:16:41 +00:00
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.abstracts.WithOptionalLanguageCode
2023-06-12 06:25:43 +00:00
import dev.inmo.tgbotapi.utils.RiskFeature
2022-04-21 18:16:41 +00:00
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use GroupChat due")
2022-04-21 18:16:41 +00:00
data class GroupChatImpl(
@SerialName(idField)
override val id: ChatId,
2022-04-21 18:16:41 +00:00
@SerialName(titleField)
override val title: String
2023-10-11 07:07:07 +00:00
) : PreviewGroupChat
2022-04-21 18:16:41 +00:00
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use PrivateChat due")
2022-04-21 18:16:41 +00:00
data class PrivateChatImpl(
@SerialName(idField)
2022-11-20 07:28:23 +00:00
override val id: UserId,
2022-04-21 18:16:41 +00:00
@SerialName(usernameField)
override val username: Username? = null,
@SerialName(firstNameField)
override val firstName: String = "",
@SerialName(lastNameField)
override val lastName: String = ""
2023-10-11 07:07:07 +00:00
) : PreviewPrivateChat
2022-04-21 18:16:41 +00:00
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use SupergroupChat due")
2022-04-21 18:16:41 +00:00
data class SupergroupChatImpl(
@SerialName(idField)
override val id: ChatId,
2022-04-21 18:16:41 +00:00
@SerialName(titleField)
override val title: String,
@SerialName(usernameField)
override val username: Username? = null
2023-10-11 07:07:07 +00:00
) : PreviewSupergroupChat
2022-04-21 18:16:41 +00:00
2022-11-06 06:51:53 +00:00
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use ForumChat due")
2022-11-06 06:51:53 +00:00
data class ForumChatImpl(
@SerialName(idField)
2022-11-10 09:56:38 +00:00
override val id: IdChatIdentifier,
2022-11-06 06:51:53 +00:00
@SerialName(titleField)
override val title: String,
@SerialName(usernameField)
override val username: Username? = null
2023-10-11 07:07:07 +00:00
) : PreviewForumChat
2022-11-06 06:51:53 +00:00
2022-04-21 18:16:41 +00:00
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use ChannelChat due")
2022-04-21 18:16:41 +00:00
data class ChannelChatImpl(
@SerialName(idField)
override val id: ChatId,
2022-04-21 18:16:41 +00:00
@SerialName(titleField)
override val title: String,
@SerialName(usernameField)
override val username: Username? = null
2023-10-11 07:07:07 +00:00
) : PreviewChannelChat
2022-04-21 18:16:41 +00:00
@Serializable(UserSerializer::class)
sealed class User : PrivateChat
2023-10-11 07:07:07 +00:00
@Serializable(UserSerializer::class)
sealed class PreviewUser : PreviewPrivateChat, User()
2022-04-21 18:16:41 +00:00
@Serializable(UserSerializer::class)
2023-06-30 08:09:13 +00:00
sealed class Bot : User()
2022-04-21 18:16:41 +00:00
2023-10-11 07:07:07 +00:00
@Serializable(UserSerializer::class)
sealed class PreviewBot : PreviewUser()
2022-04-21 18:16:41 +00:00
@Serializable
data class CommonBot(
override val id: UserId,
@SerialName(firstNameField)
override val firstName: String,
@SerialName(lastNameField)
2023-06-30 08:09:13 +00:00
override val lastName: String = "",
@SerialName(usernameField)
override val username: Username? = null,
2023-10-11 07:07:07 +00:00
) : PreviewBot() {
2022-04-21 18:16:41 +00:00
@SerialName(isBotField)
private val isBot = true
}
@Serializable
data class CommonUser(
override val id: UserId,
@SerialName(firstNameField)
override val firstName: String,
@SerialName(lastNameField)
override val lastName: String = "",
@SerialName(usernameField)
override val username: Username? = null,
@SerialName(languageCodeField)
2023-12-24 13:25:41 +00:00
@Serializable(IetfLangSerializer::class)
override val ietfLanguageCode: IetfLang? = null,
2022-06-21 11:34:14 +00:00
@SerialName(isPremiumField)
2022-06-21 11:52:16 +00:00
override val isPremium: Boolean = false,
@SerialName(addedToAttachmentMenuField)
override val addedToAttachmentMenu: Boolean = false
2023-10-11 07:07:07 +00:00
) : PreviewUser(), WithOptionalLanguageCode, PossiblyPremiumChat, AbleToAddInAttachmentMenuChat {
2022-04-21 18:16:41 +00:00
constructor(
id: UserId,
firstName: String,
lastName: String = "",
username: Username? = null,
languageCode: String
2023-12-24 13:25:41 +00:00
) : this(id, firstName, lastName, username, IetfLang(languageCode))
2022-04-21 18:16:41 +00:00
}