From 8fbda09d24d70d76f7c6b4a323821a828c8e4f41 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 12 Aug 2019 14:09:14 +0600 Subject: [PATCH] chat members fields and restrict chat member request updates --- CHANGELOG.md | 3 +++ .../requests/chat/members/RestrictChatMember.kt | 11 +++-------- .../types/ChatMember/AdministratorChatMemberImpl.kt | 1 + .../types/ChatMember/CreatorChatMember.kt | 4 +++- .../types/ChatMember/KickedChatMember.kt | 1 + .../TelegramBotAPI/types/ChatMember/LeftChatMember.kt | 4 +++- .../types/ChatMember/MemberChatMember.kt | 4 +++- .../TelegramBotAPI/types/ChatMember/RawChatMember.kt | 9 ++++++++- .../types/ChatMember/RestrictedChatMember.kt | 10 ++++++++-- .../{ => abstracts}/AdministratorChatMember.kt | 7 ++----- .../ChatMember/{ => abstracts}/BannedChatMember.kt | 2 +- .../types/ChatMember/{ => abstracts}/ChatMember.kt | 2 +- .../ChatMember/abstracts/SpecialRightsChatMember.kt | 7 +++++++ 13 files changed, 44 insertions(+), 21 deletions(-) rename src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/{ => abstracts}/AdministratorChatMember.kt (64%) rename src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/{ => abstracts}/BannedChatMember.kt (69%) rename src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/{ => abstracts}/ChatMember.kt (91%) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/SpecialRightsChatMember.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 50e6d18f9b..e330b45f62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ Changes according to [July 29, 2019 Telegram Bot API update](https://core.telegr * `Sticker` and `StickerSet` now have field `isAnimated` * `ChatPermissions` object was added, `GroupChat` interface got `permissions` field, request `SetChatPermissions` was added * `GroupChat` object now have no field `allMembersAreAdmins` +* `SpecialRightsChatMember` was added for administrators and restricted members rights union, chat members abstractions +was replaced into `abstracts` package and available permissions was updated +* `RestrictChatMember` request now accept `permissions` object instead of separated permissions ## 0.16.0 Bot API 4.3 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt index 5179587c6c..aa879b1ff8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/members/RestrictChatMember.kt @@ -3,6 +3,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.UntilDate import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions import kotlinx.serialization.* import kotlinx.serialization.internal.BooleanSerializer @@ -14,14 +15,8 @@ data class RestrictChatMember( override val userId: UserId, @SerialName(untilDateField) override val untilDate: TelegramDate? = null, - @SerialName(canSendMessagesField) - private val canSendMessages: Boolean? = null, - @SerialName(canSendMediaMessagesField) - private val canSendMediaMessages: Boolean? = null, - @SerialName(canSendOtherMessagesField) - private val canSendOtherMessages: Boolean? = null, - @SerialName(canAddWebPagePreviewsField) - private val canAddWebPagePreviews: Boolean? = null + @SerialName(permissionsField) + val permissions: ChatPermissions ) : ChatMemberRequest, UntilDate { override fun method(): String = "restrictChatMember" override fun resultSerializer(): KSerializer = BooleanSerializer diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMemberImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMemberImpl.kt index dd0245717d..168b61ff8f 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMemberImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMemberImpl.kt @@ -1,5 +1,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.User data class AdministratorChatMemberImpl( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/CreatorChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/CreatorChatMember.kt index c6507cdd2a..b00de59489 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/CreatorChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/CreatorChatMember.kt @@ -1,8 +1,10 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.User -data class CreatorChatMember(override val user: User) : AdministratorChatMember { +data class CreatorChatMember(override val user: User) : + AdministratorChatMember { override val canBeEdited: Boolean = true override val canChangeInfo: Boolean = true override val canPostMessages: Boolean = true diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/KickedChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/KickedChatMember.kt index 486e30e6da..ad94b7ba24 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/KickedChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/KickedChatMember.kt @@ -1,5 +1,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.BannedChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate import com.github.insanusmokrassar.TelegramBotAPI.types.User diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/LeftChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/LeftChatMember.kt index 0fbcd3b4b7..aa90a9627b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/LeftChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/LeftChatMember.kt @@ -1,5 +1,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.User -data class LeftChatMember(override val user: User) : ChatMember +data class LeftChatMember(override val user: User) : + ChatMember diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/MemberChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/MemberChatMember.kt index b6ce19920c..7230eef218 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/MemberChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/MemberChatMember.kt @@ -1,5 +1,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.User -data class MemberChatMember(override val user: User) : ChatMember +data class MemberChatMember(override val user: User) : + ChatMember diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt index b2037bbb81..85e730212d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RawChatMember.kt @@ -1,6 +1,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember import kotlinx.serialization.* @Serializable @@ -32,6 +33,8 @@ data class RawChatMember( private val canSendMessages: Boolean = false, @SerialName(canSendMediaMessagesField) private val canSendMediaMessages: Boolean = false, + @SerialName(canSendPollsField) + private val canSendPolls: Boolean = false, @SerialName(canSendOtherMessagesField) private val canSendOtherMessages: Boolean = false, @SerialName(canAddWebPagePreviewsField) @@ -60,8 +63,12 @@ data class RawChatMember( isMember, canSendMessages, canSendMediaMessages, + canSendPolls, canSendOtherMessages, - canAddWebPagePreviews + canAddWebPagePreviews, + canChangeInfo, + canInviteUsers, + canPinMessages ) "left" -> LeftChatMember(user) "kicked" -> KickedChatMember( diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RestrictedChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RestrictedChatMember.kt index a6ab6358bd..1f685f9b1b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RestrictedChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/RestrictedChatMember.kt @@ -1,5 +1,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.BannedChatMember +import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.SpecialRightsChatMember import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate import com.github.insanusmokrassar.TelegramBotAPI.types.User @@ -9,6 +11,10 @@ data class RestrictedChatMember( val isMember: Boolean, val canSendMessages: Boolean, val canSendMediaMessages: Boolean, + val canSendPolls: Boolean, val canSendOtherMessages: Boolean, - val canAddWebpagePreviews: Boolean -) : BannedChatMember \ No newline at end of file + val canAddWebpagePreviews: Boolean, + override val canChangeInfo: Boolean, + override val canInviteUsers: Boolean, + override val canPinMessages: Boolean +) : BannedChatMember, SpecialRightsChatMember \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/AdministratorChatMember.kt similarity index 64% rename from src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMember.kt rename to src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/AdministratorChatMember.kt index 0f1ec8e402..27bc3e5842 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/AdministratorChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -1,13 +1,10 @@ -package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts -interface AdministratorChatMember : ChatMember { +interface AdministratorChatMember : SpecialRightsChatMember { val canBeEdited: Boolean - val canChangeInfo: Boolean val canPostMessages: Boolean val canEditMessages: Boolean val canRemoveMessages: Boolean - val canInviteUsers: Boolean val canRestrictMembers: Boolean - val canPinMessages: Boolean val canPromoteMembers: Boolean } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/BannedChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/BannedChatMember.kt similarity index 69% rename from src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/BannedChatMember.kt rename to src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/BannedChatMember.kt index 1bf15213b8..7cb1a3f79d 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/BannedChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/BannedChatMember.kt @@ -1,4 +1,4 @@ -package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.UntilDate diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/ChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt similarity index 91% rename from src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/ChatMember.kt rename to src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt index 86f70d1bb3..2d6c0b4f41 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/ChatMember.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/ChatMember.kt @@ -1,4 +1,4 @@ -package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember +package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts import com.github.insanusmokrassar.TelegramBotAPI.types.User diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/SpecialRightsChatMember.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/SpecialRightsChatMember.kt new file mode 100644 index 0000000000..97c51fb5a6 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/ChatMember/abstracts/SpecialRightsChatMember.kt @@ -0,0 +1,7 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts + +interface SpecialRightsChatMember : ChatMember { + val canChangeInfo: Boolean + val canInviteUsers: Boolean + val canPinMessages: Boolean +}