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

300 lines
13 KiB
Kotlin
Raw Normal View History

2022-04-21 18:16:41 +00:00
package dev.inmo.tgbotapi.types.chat
import dev.inmo.tgbotapi.types.*
2024-01-05 14:30:07 +00:00
import dev.inmo.tgbotapi.types.colors.ColorId
2022-04-21 18:16:41 +00:00
import dev.inmo.tgbotapi.types.message.abstracts.Message
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
2023-12-31 10:38:22 +00:00
import dev.inmo.tgbotapi.types.reactions.Reaction
2023-06-12 06:25:43 +00:00
import dev.inmo.tgbotapi.utils.RiskFeature
import korlibs.time.DateTime
2022-04-21 18:16:41 +00:00
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
2022-06-21 10:27:53 +00:00
import kotlinx.serialization.json.JsonObject
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 ExtendedChannelChat due")
2022-04-21 18:16:41 +00:00
data class ExtendedChannelChatImpl(
@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,
2022-11-06 08:26:51 +00:00
@SerialName(activeUsernamesField)
override val activeUsernames: List<Username> = emptyList(),
2022-04-21 18:16:41 +00:00
@SerialName(photoField)
override val chatPhoto: ChatPhoto? = null,
@SerialName(descriptionField)
override val description: String = "",
@SerialName(inviteLinkField)
override val inviteLink: String? = null,
@SerialName(pinnedMessageField)
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
override val pinnedMessage: Message? = null,
@SerialName(linkedChatIdField)
2022-12-30 14:55:47 +00:00
override val linkedGroupChatId: IdChatIdentifier? = null,
@SerialName(hasHiddenMembersField)
2023-12-31 10:38:22 +00:00
override val membersHidden: Boolean = false,
@SerialName(availableReactionsField)
override val availableReactions: List<Reaction>? = null,
@SerialName(emojiStatusCustomEmojiIdField)
override val statusEmojiId: CustomEmojiId? = null,
@SerialName(emojiStatusExpirationDateField)
2024-01-05 14:30:07 +00:00
override val statusEmojiExpiration: TelegramDate? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(hasVisibleHistoryField)
override val newMembersSeeHistory: Boolean = false
2022-04-21 18:16:41 +00:00
) : ExtendedChannelChat
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use ExtendedGroupChat due")
2022-04-21 18:16:41 +00:00
data class ExtendedGroupChatImpl(
@SerialName(idField)
override val id: ChatId,
2022-04-21 18:16:41 +00:00
@SerialName(titleField)
override val title: String,
@SerialName(photoField)
override val chatPhoto: ChatPhoto? = null,
@SerialName(permissionsField)
override val permissions: ChatPermissions,
@SerialName(descriptionField)
override val description: String = "",
@SerialName(inviteLinkField)
override val inviteLink: String? = null,
@SerialName(pinnedMessageField)
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
2022-12-30 14:55:47 +00:00
override val pinnedMessage: Message? = null,
@SerialName(hasHiddenMembersField)
2023-12-31 10:38:22 +00:00
override val membersHidden: Boolean = false,
@SerialName(availableReactionsField)
override val availableReactions: List<Reaction>? = null,
@SerialName(emojiStatusCustomEmojiIdField)
override val statusEmojiId: CustomEmojiId? = null,
@SerialName(emojiStatusExpirationDateField)
2024-01-05 14:30:07 +00:00
override val statusEmojiExpiration: TelegramDate? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(hasVisibleHistoryField)
override val newMembersSeeHistory: Boolean = false,
2022-04-21 18:16:41 +00:00
) : ExtendedGroupChat
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use ExtendedPrivateChat due")
2022-04-21 18:16:41 +00:00
data class ExtendedPrivateChatImpl(
@SerialName(idField)
2022-11-20 07:28:23 +00:00
override val id: UserId,
2022-04-21 18:16:41 +00:00
@SerialName(photoField)
override val chatPhoto: ChatPhoto? = null,
@SerialName(usernameField)
override val username: Username? = null,
2022-11-06 08:26:51 +00:00
@SerialName(activeUsernamesField)
override val activeUsernames: List<Username> = emptyList(),
2022-04-21 18:16:41 +00:00
@SerialName(firstNameField)
override val firstName: String = "",
@SerialName(lastNameField)
override val lastName: String = "",
@SerialName(bioField)
override val bio: String = "",
@SerialName(hasPrivateForwardsField)
override val hasPrivateForwards: Boolean = false,
@SerialName(hasRestrictedVoiceAndVideoMessagesField)
override val hasRestrictedVoiceAndVideoMessages: Boolean = false,
@SerialName(emojiStatusCustomEmojiIdField)
override val statusEmojiId: CustomEmojiId? = null,
@SerialName(emojiStatusExpirationDateField)
2024-01-05 14:30:07 +00:00
override val statusEmojiExpiration: TelegramDate? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
2022-04-21 18:16:41 +00:00
) : ExtendedPrivateChat
typealias ExtendedUser = ExtendedPrivateChatImpl
@Serializable
2023-06-12 06:25:43 +00:00
@RiskFeature("This class is a subject of changes. It is better to use ExtendedSupergroupChat due")
2022-04-21 18:16:41 +00:00
data class ExtendedSupergroupChatImpl(
@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,
2022-11-06 08:26:51 +00:00
@SerialName(activeUsernamesField)
override val activeUsernames: List<Username> = emptyList(),
2022-04-21 18:16:41 +00:00
@SerialName(photoField)
override val chatPhoto: ChatPhoto? = null,
@SerialName(permissionsField)
override val permissions: ChatPermissions,
@SerialName(descriptionField)
override val description: String = "",
@SerialName(inviteLinkField)
override val inviteLink: String? = null,
@SerialName(pinnedMessageField)
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
override val pinnedMessage: Message? = null,
@SerialName(stickerSetNameFullField)
override val stickerSetName: StickerSetName? = null,
@SerialName(slowModeDelayField)
override val slowModeDelay: Long? = null,
@SerialName(canSetStickerSetField)
override val canSetStickerSet: Boolean = false,
@SerialName(linkedChatIdField)
2022-11-10 09:56:38 +00:00
override val linkedChannelChatId: IdChatIdentifier? = null,
2022-04-21 18:16:41 +00:00
@SerialName(locationField)
2022-06-21 11:34:14 +00:00
override val location: ChatLocation? = null,
@SerialName(joinToSendMessagesField)
2022-06-21 12:30:31 +00:00
override val requiresJoinForMessaging: Boolean = false,
2022-06-21 11:34:14 +00:00
@SerialName(joinByRequestField)
2022-12-30 14:55:47 +00:00
override val requireAdminApproveToJoin: Boolean = false,
@SerialName(hasAggressiveAntiSpamEnabledField)
override val isAggressiveAntiSpamEnabled: Boolean = false,
2022-12-30 14:55:47 +00:00
@SerialName(hasHiddenMembersField)
2023-12-31 10:38:22 +00:00
override val membersHidden: Boolean = false,
@SerialName(availableReactionsField)
override val availableReactions: List<Reaction>? = null,
@SerialName(emojiStatusCustomEmojiIdField)
override val statusEmojiId: CustomEmojiId? = null,
@SerialName(emojiStatusExpirationDateField)
2024-01-05 14:30:07 +00:00
override val statusEmojiExpiration: TelegramDate? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(hasVisibleHistoryField)
override val newMembersSeeHistory: Boolean = false,
2024-02-16 15:57:03 +00:00
@SerialName(unrestrictBoostsCountField)
override val unrestrictBoostsCount: Int? = null,
@SerialName(customEmojiStickerSetNameField)
override val customEmojiStickerSetName: StickerSetName? = null,
2022-04-21 18:16:41 +00:00
) : ExtendedSupergroupChat
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 ExtendedForumChat due")
2022-11-06 06:51:53 +00:00
data class ExtendedForumChatImpl(
@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,
2022-11-06 08:26:51 +00:00
@SerialName(activeUsernamesField)
override val activeUsernames: List<Username> = emptyList(),
2022-11-06 06:51:53 +00:00
@SerialName(photoField)
override val chatPhoto: ChatPhoto? = null,
@SerialName(permissionsField)
override val permissions: ChatPermissions,
@SerialName(descriptionField)
override val description: String = "",
@SerialName(inviteLinkField)
override val inviteLink: String? = null,
@SerialName(pinnedMessageField)
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
override val pinnedMessage: Message? = null,
@SerialName(stickerSetNameFullField)
override val stickerSetName: StickerSetName? = null,
@SerialName(slowModeDelayField)
override val slowModeDelay: Long? = null,
@SerialName(canSetStickerSetField)
override val canSetStickerSet: Boolean = false,
@SerialName(linkedChatIdField)
2022-11-10 09:56:38 +00:00
override val linkedChannelChatId: IdChatIdentifier? = null,
2022-11-06 06:51:53 +00:00
@SerialName(locationField)
override val location: ChatLocation? = null,
@SerialName(joinToSendMessagesField)
override val requiresJoinForMessaging: Boolean = false,
@SerialName(joinByRequestField)
2022-12-30 14:55:47 +00:00
override val requireAdminApproveToJoin: Boolean = false,
@SerialName(hasAggressiveAntiSpamEnabledField)
override val isAggressiveAntiSpamEnabled: Boolean = false,
2022-12-30 14:55:47 +00:00
@SerialName(hasHiddenMembersField)
2023-12-31 10:38:22 +00:00
override val membersHidden: Boolean = false,
@SerialName(availableReactionsField)
override val availableReactions: List<Reaction>? = null,
@SerialName(emojiStatusCustomEmojiIdField)
override val statusEmojiId: CustomEmojiId? = null,
@SerialName(emojiStatusExpirationDateField)
2024-01-05 14:30:07 +00:00
override val statusEmojiExpiration: TelegramDate? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(hasVisibleHistoryField)
override val newMembersSeeHistory: Boolean = false,
2024-02-16 15:57:03 +00:00
@SerialName(unrestrictBoostsCountField)
override val unrestrictBoostsCount: Int? = null,
@SerialName(customEmojiStickerSetNameField)
override val customEmojiStickerSetName: StickerSetName? = null,
2022-11-06 06:51:53 +00:00
) : ExtendedForumChat
2022-04-21 18:16:41 +00:00
@Serializable
data class ExtendedBot(
override val id: UserId,
@SerialName(firstNameField)
override val firstName: String,
@SerialName(lastNameField)
override val lastName: String = "",
2023-06-30 08:09:13 +00:00
@SerialName(usernameField)
override val username: Username? = null,
2022-04-21 18:16:41 +00:00
@SerialName(canJoinGroupsField)
val canJoinGroups: Boolean = false,
@SerialName(canReadAllGroupMessagesField)
val canReadAllGroupMessages: Boolean = false,
@SerialName(supportInlineQueriesField)
2023-10-11 07:38:09 +00:00
val supportsInlineQueries: Boolean = false,
@SerialName(photoField)
2024-01-05 14:30:07 +00:00
override val chatPhoto: ChatPhoto? = null,
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0),
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null,
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null,
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
2023-10-11 07:38:09 +00:00
) : Bot(), ExtendedChat {
2022-04-21 18:16:41 +00:00
@SerialName(isBotField)
private val isBot = true
}
data class UnknownExtendedChat(
2022-11-10 09:56:38 +00:00
override val id: IdChatIdentifier,
2022-06-21 10:27:53 +00:00
val raw: String,
val rawJson: JsonObject
2022-04-21 18:16:41 +00:00
) : ExtendedChat {
override val chatPhoto: ChatPhoto? = null
2024-01-05 14:30:07 +00:00
@SerialName(accentColorIdField)
override val accentColorId: ColorId = ColorId(0)
@SerialName(profileAccentColorIdField)
override val profileAccentColorId: ColorId? = null
@SerialName(backgroundCustomEmojiIdField)
override val backgroundCustomEmojiId: CustomEmojiId? = null
@SerialName(profileBackgroundCustomEmojiIdField)
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null
2022-04-21 18:16:41 +00:00
}