From 323c4de8587cf4369b038077a669fe7d77b85086 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 21 Apr 2022 23:24:01 +0600 Subject: [PATCH] replace of ChatMember --- CHANGELOG.md | 2 + .../bot/ClearMyDefaultAdministratorRights.kt | 1 - .../bot/SetMyDefaultAdministratorRights.kt | 2 +- .../bot/GetMyDefaultAdministratorRights.kt | 2 +- .../chat/get/GetChatAdministrators.kt | 4 +- .../requests/chat/members/GetChatMember.kt | 4 +- .../types/ChatAdministratorRightsImpl.kt | 31 +----------- .../ChatMember/AdministratorChatMemberImpl.kt | 41 +--------------- .../types/ChatMember/CreatorChatMember.kt | 40 +--------------- .../types/ChatMember/KickedChatMember.kt | 17 +------ .../types/ChatMember/LeftChatMemberImpl.kt | 12 +---- .../types/ChatMember/MemberChatMemberImpl.kt | 12 +---- .../types/ChatMember/RestrictedChatMember.kt | 36 +------------- .../abstracts/AdministratorChatMember.kt | 26 ++-------- .../ChatMember/abstracts/BannedChatMember.kt | 7 +-- .../abstracts/ChatAdministratorRights.kt | 19 ++------ .../types/ChatMember/abstracts/ChatMember.kt | 48 ++----------------- .../ChatMember/abstracts/LeftChatMember.kt | 3 +- .../ChatMember/abstracts/MemberChatMember.kt | 3 +- .../abstracts/SpecialRightsChatMember.kt | 6 +-- .../inmo/tgbotapi/types/ChatMemberUpdated.kt | 2 +- .../chat/member/AdministratorChatMember.kt | 26 ++++++++++ .../member/AdministratorChatMemberImpl.kt | 40 ++++++++++++++++ .../types/chat/member/BannedChatMember.kt | 7 +++ .../chat/member/ChatAdministratorRights.kt | 18 +++++++ .../member/ChatAdministratorRightsImpl.kt | 31 ++++++++++++ .../tgbotapi/types/chat/member/ChatMember.kt | 45 +++++++++++++++++ .../types/chat/member/CreatorChatMember.kt | 39 +++++++++++++++ .../types/chat/member/KickedChatMember.kt | 16 +++++++ .../types/chat/member/LeftChatMember.kt | 6 +++ .../types/chat/member/LeftChatMemberImpl.kt | 11 +++++ .../types/chat/member/MemberChatMember.kt | 6 +++ .../types/chat/member/MemberChatMemberImpl.kt | 11 +++++ .../types/chat/member/RestrictedChatMember.kt | 34 +++++++++++++ .../chat/member/SpecialRightsChatMember.kt | 6 +++ .../tgbotapi/extensions/utils/ClassCasts.kt | 8 +++- .../utils/extensions/raw/ChatMemberUpdated.kt | 2 +- 37 files changed, 346 insertions(+), 278 deletions(-) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f28bca6b1..d085aeffb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ __All the `tgbotapi.extensions.*` packages have been removed__ * `Core`: * **`Ktor` package renamed. Migration:** `dev.inmo.tgbotapi.bot.Ktor` -> `dev.inmo.tgbotapi.bot.ktor` * **`CallbackQuery` package renamed. Migration:** `dev.inmo.tgbotapi.types.CallbackQuery([\s\\.])` -> `dev.inmo.tgbotapi.types.queries.callback$1` + * **`ChatMember` package renamed. Migration:** `dev.inmo.tgbotapi.types.ChatMember([\s\\.])` -> `dev.inmo.tgbotapi.types.chat.member$1` + * **`ChatAdministratorRightsImpl` replaced. Migration:** `dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl` -> `dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl` * Constructor of `UnknownInlineKeyboardButton` is not internal and can be created with any `json` ([#563](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/563)) * All the interfaces from `dev.inmo.tgbotapi.types.files.abstracts` have been replaced to `dev.inmo.tgbotapi.types.files` and converted to sealed ([#550](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/550)) * `PassportFile` has been replaced to `dev.inmo.tgbotapi.types.files` diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt index 098d576213..f07fad22c1 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/ClearMyDefaultAdministratorRights.kt @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.api.bot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.bot.ClearMyDefaultAdministratorRights -import dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl suspend fun TelegramBot.clearMyDefaultAdministratorRights( forChannels: Boolean? = null diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt index 6f14be2a1e..dcebf5b22a 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/bot/SetMyDefaultAdministratorRights.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.extensions.api.bot import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.bot.SetMyDefaultAdministratorRights -import dev.inmo.tgbotapi.types.ChatAdministratorRightsImpl +import dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl suspend fun TelegramBot.setMyDefaultAdministratorRights( rights: ChatAdministratorRightsImpl, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt index e59dcc5be1..2961334754 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/bot/GetMyDefaultAdministratorRights.kt @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.requests.bot import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.AdministratorChatMemberImpl +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt index 4ab2d546fc..3ca09738ef 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/get/GetChatAdministrators.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.requests.chat.get import dev.inmo.tgbotapi.CommonAbstracts.types.ChatRequest import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.ChatIdentifier -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMemberSerializer +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer import dev.inmo.tgbotapi.types.chatIdField import kotlinx.serialization.* import kotlinx.serialization.builtins.ListSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt index b5a1e58e30..971aa3be74 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/GetChatMember.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.requests.chat.members import dev.inmo.tgbotapi.requests.chat.abstracts.ChatMemberRequest import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMemberSerializer +import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer import kotlinx.serialization.* @Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt index b7398fa49d..6f88f65b07 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatAdministratorRightsImpl.kt @@ -1,31 +1,4 @@ package dev.inmo.tgbotapi.types -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatAdministratorRights -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class ChatAdministratorRightsImpl( - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canPostMessagesField) - override val canPostMessages: Boolean = false, - @SerialName(canEditMessagesField) - override val canEditMessages: Boolean = false, - @SerialName(canDeleteMessagesField) - override val canRemoveMessages: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canRestrictMembersField) - override val canRestrictMembers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false, - @SerialName(canPromoteMembersField) - override val canPromoteMembers: Boolean = false, - @SerialName(canManageVideoChatsField) - override val canManageVideoChats: Boolean = false, - @SerialName(canManageChatField) - override val canManageChat: Boolean = false, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false -) : ChatAdministratorRights +@Deprecated("Renamed", ReplaceWith("ChatAdministratorRightsImpl", "dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl")) +typealias ChatAdministratorRightsImpl = dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRightsImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt index b79d44145d..5e30fbbe29 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt @@ -1,41 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import kotlinx.serialization.* - -@Serializable -data class AdministratorChatMemberImpl( - @SerialName(userField) - override val user: User, - @SerialName(canBeEditedField) - override val canBeEdited: Boolean = false, - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canPostMessagesField) - override val canPostMessages: Boolean = false, - @SerialName(canEditMessagesField) - override val canEditMessages: Boolean = false, - @SerialName(canDeleteMessagesField) - override val canRemoveMessages: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canRestrictMembersField) - override val canRestrictMembers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false, - @SerialName(canPromoteMembersField) - override val canPromoteMembers: Boolean = false, - @SerialName(canManageVideoChatsField) - override val canManageVideoChats: Boolean = false, - @SerialName(canManageChatField) - override val canManageChat: Boolean = false, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false, - @SerialName(customTitleField) - override val customTitle: String? = null -) : AdministratorChatMember { - @SerialName(statusField) - @Required - private val type: String = "administrator" -} +@Deprecated("AdministratorChatMemberImpl", ReplaceWith("AdministratorChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl")) +typealias AdministratorChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt index 36da996d9a..045772c3d3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt @@ -1,40 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.AdministratorChatMember -import kotlinx.serialization.* - -@Serializable -data class CreatorChatMember( - override val user: User, - @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false, - @SerialName(customTitleField) - override val customTitle: String? = null -) : AdministratorChatMember { - @Transient - override val canBeEdited: Boolean = true - @Transient - override val canChangeInfo: Boolean = true - @Transient - override val canPostMessages: Boolean = true - @Transient - override val canEditMessages: Boolean = true - @Transient - override val canRemoveMessages: Boolean = true - @Transient - override val canInviteUsers: Boolean = true - @Transient - override val canRestrictMembers: Boolean = true - @Transient - override val canPinMessages: Boolean = true - @Transient - override val canPromoteMembers: Boolean = true - @Transient - override val canManageVideoChats: Boolean = true - @Transient - override val canManageChat: Boolean = true - @SerialName(statusField) - @Required - private val type: String = "creator" -} +@Deprecated("CreatorChatMember", ReplaceWith("CreatorChatMember", "dev.inmo.tgbotapi.types.chat.member.CreatorChatMember")) +typealias CreatorChatMember = dev.inmo.tgbotapi.types.chat.member.CreatorChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt index df8b87734c..fd14d6cb5b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/KickedChatMember.kt @@ -1,17 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.BannedChatMember -import kotlinx.serialization.* - -@Serializable -data class KickedChatMember( - @SerialName(userField) - override val user: User, - @SerialName(untilDateField) - override val untilDate: TelegramDate? = null -) : BannedChatMember { - @SerialName(statusField) - @Required - private val type: String = "kicked" -} \ No newline at end of file +@Deprecated("KickedChatMember", ReplaceWith("KickedChatMember", "dev.inmo.tgbotapi.types.chat.member.KickedChatMember")) +typealias KickedChatMember = dev.inmo.tgbotapi.types.chat.member.KickedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt index d12e4b551b..c14ceae383 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/LeftChatMemberImpl.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.LeftChatMember -import kotlinx.serialization.* - -@Serializable -data class LeftChatMemberImpl(@SerialName(userField) override val user: User) : LeftChatMember { - @SerialName(statusField) - @Required - private val type: String = "left" -} +@Deprecated("LeftChatMemberImpl", ReplaceWith("LeftChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl")) +typealias LeftChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.LeftChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt index 0f76788380..2e1e6cef43 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/MemberChatMemberImpl.kt @@ -1,12 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.MemberChatMember -import kotlinx.serialization.* - -@Serializable -data class MemberChatMemberImpl(@SerialName(userField) override val user: User) : MemberChatMember { - @SerialName(statusField) - @Required - private val type: String = "member" -} +@Deprecated("MemberChatMemberImpl", ReplaceWith("MemberChatMemberImpl", "dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl")) +typealias MemberChatMemberImpl = dev.inmo.tgbotapi.types.chat.member.MemberChatMemberImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt index dab888e2cc..ffd910bbba 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/RestrictedChatMember.kt @@ -1,36 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.BannedChatMember -import dev.inmo.tgbotapi.types.ChatMember.abstracts.SpecialRightsChatMember -import kotlinx.serialization.* - -@Serializable -data class RestrictedChatMember( - @SerialName(userField) - override val user: User, - @SerialName(untilDateField) - override val untilDate: TelegramDate? = null, - @SerialName(isMemberField) - val isMember: Boolean = false, - @SerialName(canSendMessagesField) - val canSendMessages: Boolean = false, - @SerialName(canSendMediaMessagesField) - val canSendMediaMessages: Boolean = false, - @SerialName(canSendPollsField) - val canSendPolls: Boolean = false, - @SerialName(canSendOtherMessagesField) - val canSendOtherMessages: Boolean = false, - @SerialName(canAddWebPagePreviewsField) - val canAddWebpagePreviews: Boolean = false, - @SerialName(canChangeInfoField) - override val canChangeInfo: Boolean = false, - @SerialName(canInviteUsersField) - override val canInviteUsers: Boolean = false, - @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false -) : BannedChatMember, SpecialRightsChatMember { - @SerialName(statusField) - @Required - private val type: String = "restricted" -} \ No newline at end of file +@Deprecated("RestrictedChatMember", ReplaceWith("RestrictedChatMember", "dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember")) +typealias RestrictedChatMember = dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt index 9d48b9f9ad..05cb4364dc 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -1,25 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.utils.RiskFeature -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder +@Deprecated("AdministratorChatMember", ReplaceWith("AdministratorChatMember", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember")) +typealias AdministratorChatMember = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember -@Serializable(AdministratorChatMemberSerializer::class) -interface AdministratorChatMember : SpecialRightsChatMember, ChatAdministratorRights { - val canBeEdited: Boolean - val customTitle: String? - - val canManageVoiceChats: Boolean - get() = canManageVideoChats -} - -@RiskFeature -object AdministratorChatMemberSerializer : KSerializer { - override val descriptor: SerialDescriptor = ChatMemberSerializer.descriptor - - override fun deserialize(decoder: Decoder): AdministratorChatMember = ChatMemberSerializer.deserialize(decoder) as AdministratorChatMember - override fun serialize(encoder: Encoder, value: AdministratorChatMember) = ChatMemberSerializer.serialize(encoder, value) -} +@Deprecated("AdministratorChatMemberSerializer", ReplaceWith("AdministratorChatMemberSerializer", "dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer")) +typealias AdministratorChatMemberSerializer = dev.inmo.tgbotapi.types.chat.member.AdministratorChatMemberSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt index 52da711ddf..6fd4f6867c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/BannedChatMember.kt @@ -1,7 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate -import kotlinx.serialization.Serializable - -@Serializable(ChatMemberSerializer::class) -interface BannedChatMember : ChatMember, UntilDate \ No newline at end of file +@Deprecated("BannedChatMember", ReplaceWith("BannedChatMember", "dev.inmo.tgbotapi.types.chat.member.BannedChatMember")) +typealias BannedChatMember = dev.inmo.tgbotapi.types.chat.member.BannedChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt index 61a3889778..93c0cbc72a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatAdministratorRights.kt @@ -1,18 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -sealed interface SpecialChatAdministratorRights { - val canChangeInfo: Boolean - val canInviteUsers: Boolean - val canPinMessages: Boolean -} +@Deprecated("SpecialChatAdministratorRights", ReplaceWith("SpecialChatAdministratorRights", "dev.inmo.tgbotapi.types.chat.member.SpecialChatAdministratorRights")) +typealias SpecialChatAdministratorRights = dev.inmo.tgbotapi.types.chat.member.SpecialChatAdministratorRights -interface ChatAdministratorRights : SpecialChatAdministratorRights { - val isAnonymous: Boolean - val canManageChat: Boolean - val canRemoveMessages: Boolean - val canManageVideoChats: Boolean - val canRestrictMembers: Boolean - val canPromoteMembers: Boolean - val canPostMessages: Boolean - val canEditMessages: Boolean -} +@Deprecated("ChatAdministratorRights", ReplaceWith("ChatAdministratorRights", "dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRights")) +typealias ChatAdministratorRights = dev.inmo.tgbotapi.types.chat.member.ChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt index 8b6de401ab..6498f6090d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt @@ -1,47 +1,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import dev.inmo.tgbotapi.CommonAbstracts.WithUser -import dev.inmo.tgbotapi.types.ChatMember.* -import dev.inmo.tgbotapi.types.User -import dev.inmo.tgbotapi.types.statusField -import dev.inmo.tgbotapi.utils.RiskFeature -import dev.inmo.tgbotapi.utils.nonstrictJsonFormat -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.descriptors.SerialDescriptor -import kotlinx.serialization.encoding.Decoder -import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.jsonPrimitive +@Deprecated("ChatMember", ReplaceWith("ChatMember", "dev.inmo.tgbotapi.types.chat.member.ChatMember")) +typealias ChatMember = dev.inmo.tgbotapi.types.chat.member.ChatMember -@Serializable(ChatMemberSerializer::class) -sealed interface ChatMember : WithUser - -@RiskFeature -object ChatMemberSerializer : KSerializer { - override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor - - override fun deserialize(decoder: Decoder): ChatMember { - val json = JsonObject.serializer().deserialize(decoder) - return when (json[statusField] ?.jsonPrimitive ?.content ?: error("Status field of chat member must be specified, but incoming json contains next: $json")) { - "creator" -> nonstrictJsonFormat.decodeFromJsonElement(CreatorChatMember.serializer(), json) - "administrator" -> nonstrictJsonFormat.decodeFromJsonElement(AdministratorChatMemberImpl.serializer(), json) - "member" -> nonstrictJsonFormat.decodeFromJsonElement(MemberChatMemberImpl.serializer(), json) - "restricted" -> nonstrictJsonFormat.decodeFromJsonElement(RestrictedChatMember.serializer(), json) - "left" -> nonstrictJsonFormat.decodeFromJsonElement(LeftChatMemberImpl.serializer(), json) - "kicked" -> nonstrictJsonFormat.decodeFromJsonElement(KickedChatMember.serializer(), json) - else -> error("Unknown type of chat member in json: $json") - } - } - - override fun serialize(encoder: Encoder, value: ChatMember) { - when (value) { - is CreatorChatMember -> CreatorChatMember.serializer() - is AdministratorChatMemberImpl -> AdministratorChatMemberImpl.serializer() - is MemberChatMember -> MemberChatMemberImpl.serializer() - is RestrictedChatMember -> RestrictedChatMember.serializer() - is LeftChatMember -> LeftChatMemberImpl.serializer() - is KickedChatMember -> KickedChatMember.serializer() - } - } -} +@Deprecated("ChatMemberSerializer", ReplaceWith("ChatMemberSerializer", "dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer")) +typealias ChatMemberSerializer = dev.inmo.tgbotapi.types.chat.member.ChatMemberSerializer diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt index 7a31dfc9a8..831545fe87 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/LeftChatMember.kt @@ -1,3 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -interface LeftChatMember : ChatMember +@Deprecated("LeftChatMember", ReplaceWith("LeftChatMember", "dev.inmo.tgbotapi.types.chat.member.LeftChatMember")) +typealias LeftChatMember = dev.inmo.tgbotapi.types.chat.member.LeftChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt index 665aeb04aa..5885111058 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/MemberChatMember.kt @@ -1,3 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -interface MemberChatMember : ChatMember +@Deprecated("MemberChatMember", ReplaceWith("MemberChatMember", "dev.inmo.tgbotapi.types.chat.member.MemberChatMember")) +typealias MemberChatMember = dev.inmo.tgbotapi.types.chat.member.MemberChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt index 79cea14abb..0bf0cc79a3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/SpecialRightsChatMember.kt @@ -1,6 +1,4 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts -import kotlinx.serialization.Serializable - -@Serializable(ChatMemberSerializer::class) -interface SpecialRightsChatMember : ChatMember, SpecialChatAdministratorRights +@Deprecated("SpecialRightsChatMember", ReplaceWith("SpecialRightsChatMember", "dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember")) +typealias SpecialRightsChatMember = dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt index 856e113ac0..3e225d1c88 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMember import dev.inmo.tgbotapi.types.chat.abstracts.Chat import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt new file mode 100644 index 0000000000..7d25a41eaf --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMember.kt @@ -0,0 +1,26 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.utils.RiskFeature +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +@Serializable(AdministratorChatMemberSerializer::class) +sealed interface AdministratorChatMember : SpecialRightsChatMember, ChatAdministratorRights { + val canBeEdited: Boolean + val customTitle: String? + + val canManageVoiceChats: Boolean + get() = canManageVideoChats +} + +@RiskFeature +object AdministratorChatMemberSerializer : KSerializer { + override val descriptor: SerialDescriptor = ChatMemberSerializer.descriptor + + override fun deserialize(decoder: Decoder): AdministratorChatMember = ChatMemberSerializer.deserialize(decoder) as AdministratorChatMember + override fun serialize(encoder: Encoder, value: AdministratorChatMember) = + ChatMemberSerializer.serialize(encoder, value) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt new file mode 100644 index 0000000000..4918c1f8e5 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/AdministratorChatMemberImpl.kt @@ -0,0 +1,40 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class AdministratorChatMemberImpl( + @SerialName(userField) + override val user: User, + @SerialName(canBeEditedField) + override val canBeEdited: Boolean = false, + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canPostMessagesField) + override val canPostMessages: Boolean = false, + @SerialName(canEditMessagesField) + override val canEditMessages: Boolean = false, + @SerialName(canDeleteMessagesField) + override val canRemoveMessages: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canRestrictMembersField) + override val canRestrictMembers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false, + @SerialName(canPromoteMembersField) + override val canPromoteMembers: Boolean = false, + @SerialName(canManageVideoChatsField) + override val canManageVideoChats: Boolean = false, + @SerialName(canManageChatField) + override val canManageChat: Boolean = false, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false, + @SerialName(customTitleField) + override val customTitle: String? = null +) : AdministratorChatMember { + @SerialName(statusField) + @Required + private val type: String = "administrator" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt new file mode 100644 index 0000000000..3a38361bd9 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/BannedChatMember.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.CommonAbstracts.types.UntilDate +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface BannedChatMember : ChatMember, UntilDate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt new file mode 100644 index 0000000000..683325ed12 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRights.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.types.chat.member + +sealed interface SpecialChatAdministratorRights { + val canChangeInfo: Boolean + val canInviteUsers: Boolean + val canPinMessages: Boolean +} + +sealed interface ChatAdministratorRights : SpecialChatAdministratorRights { + val isAnonymous: Boolean + val canManageChat: Boolean + val canRemoveMessages: Boolean + val canManageVideoChats: Boolean + val canRestrictMembers: Boolean + val canPromoteMembers: Boolean + val canPostMessages: Boolean + val canEditMessages: Boolean +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt new file mode 100644 index 0000000000..8f1ea768b3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatAdministratorRightsImpl.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ChatAdministratorRightsImpl( + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canPostMessagesField) + override val canPostMessages: Boolean = false, + @SerialName(canEditMessagesField) + override val canEditMessages: Boolean = false, + @SerialName(canDeleteMessagesField) + override val canRemoveMessages: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canRestrictMembersField) + override val canRestrictMembers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false, + @SerialName(canPromoteMembersField) + override val canPromoteMembers: Boolean = false, + @SerialName(canManageVideoChatsField) + override val canManageVideoChats: Boolean = false, + @SerialName(canManageChatField) + override val canManageChat: Boolean = false, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false +) : ChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt new file mode 100644 index 0000000000..41cd0e25fd --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/ChatMember.kt @@ -0,0 +1,45 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.CommonAbstracts.WithUser +import dev.inmo.tgbotapi.types.statusField +import dev.inmo.tgbotapi.utils.RiskFeature +import dev.inmo.tgbotapi.utils.nonstrictJsonFormat +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonPrimitive + +@Serializable(ChatMemberSerializer::class) +sealed interface ChatMember : WithUser + +@RiskFeature +object ChatMemberSerializer : KSerializer { + override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor + + override fun deserialize(decoder: Decoder): ChatMember { + val json = JsonObject.serializer().deserialize(decoder) + return when (json[statusField] ?.jsonPrimitive ?.content ?: error("Status field of chat member must be specified, but incoming json contains next: $json")) { + "creator" -> nonstrictJsonFormat.decodeFromJsonElement(CreatorChatMember.serializer(), json) + "administrator" -> nonstrictJsonFormat.decodeFromJsonElement(AdministratorChatMemberImpl.serializer(), json) + "member" -> nonstrictJsonFormat.decodeFromJsonElement(MemberChatMemberImpl.serializer(), json) + "restricted" -> nonstrictJsonFormat.decodeFromJsonElement(RestrictedChatMember.serializer(), json) + "left" -> nonstrictJsonFormat.decodeFromJsonElement(LeftChatMemberImpl.serializer(), json) + "kicked" -> nonstrictJsonFormat.decodeFromJsonElement(KickedChatMember.serializer(), json) + else -> error("Unknown type of chat member in json: $json") + } + } + + override fun serialize(encoder: Encoder, value: ChatMember) { + when (value) { + is CreatorChatMember -> CreatorChatMember.serializer() + is AdministratorChatMemberImpl -> AdministratorChatMemberImpl.serializer() + is MemberChatMember -> MemberChatMemberImpl.serializer() + is RestrictedChatMember -> RestrictedChatMember.serializer() + is LeftChatMember -> LeftChatMemberImpl.serializer() + is KickedChatMember -> KickedChatMember.serializer() + } + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt new file mode 100644 index 0000000000..edf22c3c9f --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/CreatorChatMember.kt @@ -0,0 +1,39 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class CreatorChatMember( + override val user: User, + @SerialName(isAnonymousField) + override val isAnonymous: Boolean = false, + @SerialName(customTitleField) + override val customTitle: String? = null +) : AdministratorChatMember { + @Transient + override val canBeEdited: Boolean = true + @Transient + override val canChangeInfo: Boolean = true + @Transient + override val canPostMessages: Boolean = true + @Transient + override val canEditMessages: Boolean = true + @Transient + override val canRemoveMessages: Boolean = true + @Transient + override val canInviteUsers: Boolean = true + @Transient + override val canRestrictMembers: Boolean = true + @Transient + override val canPinMessages: Boolean = true + @Transient + override val canPromoteMembers: Boolean = true + @Transient + override val canManageVideoChats: Boolean = true + @Transient + override val canManageChat: Boolean = true + @SerialName(statusField) + @Required + private val type: String = "creator" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt new file mode 100644 index 0000000000..c5d4435dc1 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/KickedChatMember.kt @@ -0,0 +1,16 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class KickedChatMember( + @SerialName(userField) + override val user: User, + @SerialName(untilDateField) + override val untilDate: TelegramDate? = null +) : BannedChatMember { + @SerialName(statusField) + @Required + private val type: String = "kicked" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt new file mode 100644 index 0000000000..436a0eb261 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface LeftChatMember : ChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt new file mode 100644 index 0000000000..e8b1c070c3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/LeftChatMemberImpl.kt @@ -0,0 +1,11 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class LeftChatMemberImpl(@SerialName(userField) override val user: User) : LeftChatMember { + @SerialName(statusField) + @Required + private val type: String = "left" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt new file mode 100644 index 0000000000..e11554acb7 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface MemberChatMember : ChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt new file mode 100644 index 0000000000..4bc8e82f53 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/MemberChatMemberImpl.kt @@ -0,0 +1,11 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class MemberChatMemberImpl(@SerialName(userField) override val user: User) : MemberChatMember { + @SerialName(statusField) + @Required + private val type: String = "member" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt new file mode 100644 index 0000000000..f0af5abed8 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/RestrictedChatMember.kt @@ -0,0 +1,34 @@ +package dev.inmo.tgbotapi.types.chat.member + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class RestrictedChatMember( + @SerialName(userField) + override val user: User, + @SerialName(untilDateField) + override val untilDate: TelegramDate? = null, + @SerialName(isMemberField) + val isMember: Boolean = false, + @SerialName(canSendMessagesField) + val canSendMessages: Boolean = false, + @SerialName(canSendMediaMessagesField) + val canSendMediaMessages: Boolean = false, + @SerialName(canSendPollsField) + val canSendPolls: Boolean = false, + @SerialName(canSendOtherMessagesField) + val canSendOtherMessages: Boolean = false, + @SerialName(canAddWebPagePreviewsField) + val canAddWebpagePreviews: Boolean = false, + @SerialName(canChangeInfoField) + override val canChangeInfo: Boolean = false, + @SerialName(canInviteUsersField) + override val canInviteUsers: Boolean = false, + @SerialName(canPinMessagesField) + override val canPinMessages: Boolean = false +) : BannedChatMember, SpecialRightsChatMember { + @SerialName(statusField) + @Required + private val type: String = "restricted" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt new file mode 100644 index 0000000000..858b22edff --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/SpecialRightsChatMember.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.types.chat.member + +import kotlinx.serialization.Serializable + +@Serializable(ChatMemberSerializer::class) +sealed interface SpecialRightsChatMember : ChatMember, SpecialChatAdministratorRights diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 862b25a2aa..9db4c754ad 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -6,8 +6,7 @@ import dev.inmo.tgbotapi.CommonAbstracts.* import dev.inmo.tgbotapi.requests.send.payments.SendInvoice import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.queries.callback.* -import dev.inmo.tgbotapi.types.ChatMember.* -import dev.inmo.tgbotapi.types.ChatMember.abstracts.* +import dev.inmo.tgbotapi.types.chat.member.* import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.* import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.* @@ -28,6 +27,11 @@ import dev.inmo.tgbotapi.types.buttons.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.* import dev.inmo.tgbotapi.types.chat.abstracts.* import dev.inmo.tgbotapi.types.chat.abstracts.extended.* +import dev.inmo.tgbotapi.types.chat.member.AdministratorChatMember +import dev.inmo.tgbotapi.types.chat.member.BannedChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMember +import dev.inmo.tgbotapi.types.chat.member.MemberChatMember +import dev.inmo.tgbotapi.types.chat.member.SpecialRightsChatMember import dev.inmo.tgbotapi.types.dice.* import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.files.Sticker diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt index f4346c3efd..c16dbac231 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/extensions/raw/ChatMemberUpdated.kt @@ -1,7 +1,7 @@ package dev.inmo.tgbotapi.extensions.utils.extensions.raw import dev.inmo.tgbotapi.types.ChatInviteLink -import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember +import dev.inmo.tgbotapi.types.chat.member.ChatMember import dev.inmo.tgbotapi.types.ChatMemberUpdated import dev.inmo.tgbotapi.utils.RiskFeature