From 394bec1805606185dc27135a591bc2122f590312 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 12 Aug 2019 13:46:16 +0600 Subject: [PATCH] chat permissions adding --- CHANGELOG.md | 1 + .../chat/modify/SetChatPermissions.kt | 19 ++++++++++++++ .../TelegramBotAPI/types/Common.kt | 2 ++ .../types/chat/ChatPermissions.kt | 25 +++++++++++++++++++ .../types/chat/GroupChatImpl.kt | 3 ++- .../TelegramBotAPI/types/chat/RawChat.kt | 10 +++++--- .../types/chat/SupergroupChat.kt | 3 ++- .../types/chat/abstracts/GroupChat.kt | 3 +++ 8 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt create mode 100644 src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/ChatPermissions.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index d16f0b716d..807bc25cd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ like this Changes according to [July 29, 2019 Telegram Bot API update](https://core.telegram.org/bots/api#july-29-2019): * `Sticker` and `StickerSet` now have field `isAnimated` +* `ChatPermissions` object was added, `GroupChat` interface got `permissions` field, request `SetChatPermissions` was added ## 0.16.0 Bot API 4.3 diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt new file mode 100644 index 0000000000..3ebe1235b4 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/chat/modify/SetChatPermissions.kt @@ -0,0 +1,19 @@ +package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify + +import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest +import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions +import kotlinx.serialization.* +import kotlinx.serialization.internal.BooleanSerializer + +@Serializable +data class SetChatPermissions ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(permissionsField) + val permissions: ChatPermissions +): ChatRequest, SimpleRequest { + override fun method(): String = "setChatPermissions" + override fun resultSerializer(): KSerializer = BooleanSerializer +} diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt index 9d2bac17a1..cc73690882 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt @@ -146,6 +146,7 @@ const val isMemberField = "is_member" const val canSendMessagesField = "can_send_messages" const val canSendMediaMessagesField = "can_send_media_messages" const val canSendOtherMessagesField = "can_send_other_messages" +const val canSendPollsField = "can_send_polls" const val canAddWebPagePreviewsField = "can_add_web_page_previews" const val canBeEditedField = "can_be_edited" @@ -202,6 +203,7 @@ const val certificateField = "certificate" const val questionField = "question" const val optionsField = "options" const val payField = "pay" +const val permissionsField = "permissions" const val pointField = "point" const val xShiftField = "x_shift" diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/ChatPermissions.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/ChatPermissions.kt new file mode 100644 index 0000000000..8441538255 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/ChatPermissions.kt @@ -0,0 +1,25 @@ +package com.github.insanusmokrassar.TelegramBotAPI.types.chat + +import com.github.insanusmokrassar.TelegramBotAPI.types.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ChatPermissions( + @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) + val canChangeInfo: Boolean = false, + @SerialName(canInviteUsersField) + val canInviteUsers: Boolean = false, + @SerialName(canPinMessagesField) + val canPinMessages: Boolean = false +) diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/GroupChatImpl.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/GroupChatImpl.kt index 0b06bf6e64..155f4af834 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/GroupChatImpl.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/GroupChatImpl.kt @@ -11,5 +11,6 @@ data class GroupChatImpl( override val allMembersAreAdmins: Boolean, override val inviteLink: String? = null, override val chatPhoto: ChatPhoto? = null, - override val pinnedMessage: RawMessage? = null + override val pinnedMessage: RawMessage? = null, + override val permissions: ChatPermissions? = null ) : GroupChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/RawChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/RawChat.kt index d7a77e61b0..0a225f1d16 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/RawChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/RawChat.kt @@ -21,7 +21,8 @@ data class RawChat( private val sticker_set_name: String? = null, private val can_set_sticker_set: Boolean? = null, @SerialName("photo") - override val chatPhoto: ChatPhoto? = null + override val chatPhoto: ChatPhoto? = null, + private val permissions: ChatPermissions? = null ) : Chat { fun extractChat(): Chat { return when (type) { @@ -31,7 +32,9 @@ data class RawChat( title, all_members_are_administrators ?: false, invite_link, - chatPhoto + chatPhoto, + pinned_message, + permissions ) "supergroup" -> SupergroupChat( id, @@ -43,7 +46,8 @@ data class RawChat( chatPhoto, pinned_message, sticker_set_name, - can_set_sticker_set ?: false + can_set_sticker_set ?: false, + permissions ) "channel" -> ChannelChat( id, diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/SupergroupChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/SupergroupChat.kt index b310b22b6a..a0b5e35560 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/SupergroupChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/SupergroupChat.kt @@ -15,5 +15,6 @@ data class SupergroupChat( override val chatPhoto: ChatPhoto? = null, override val pinnedMessage: RawMessage? = null, val stickerSetName: String? = null, - val canSetStickerSet: Boolean + val canSetStickerSet: Boolean = false, + override val permissions: ChatPermissions? = null ) : GroupChat, UsernameChat, DescriptionChat diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/GroupChat.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/GroupChat.kt index d3ed57909b..eadc612dd8 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/GroupChat.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/chat/abstracts/GroupChat.kt @@ -1,5 +1,8 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts +import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions + interface GroupChat : PublicChat { val allMembersAreAdmins: Boolean + val permissions: ChatPermissions? }