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)
|
2022-11-10 10:24:20 +00:00
|
|
|
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
|
|
|
|
2024-04-16 13:25:18 +00:00
|
|
|
@Serializable
|
|
|
|
@RiskFeature("This class is a subject of changes. It is better to use PrivateChat due")
|
|
|
|
data class BusinessChatImpl(
|
|
|
|
@SerialName(idField)
|
|
|
|
override val id: BusinessChatId,
|
|
|
|
@SerialName(firstNameField)
|
|
|
|
override val original: PreviewPrivateChat
|
|
|
|
) : PreviewBusinessChat
|
|
|
|
|
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)
|
2022-11-10 10:24:20 +00:00
|
|
|
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)
|
2022-11-10 10:24:20 +00:00
|
|
|
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
|
|
|
}
|