diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt index d3900bd0d3..df46e0a93e 100644 --- a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt @@ -20,7 +20,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, canManageVideoChats: Boolean? = null, - canManageChat: Boolean? + canManageChat: Boolean? = null, + canManageTopics: Boolean? = null ) = execute( PromoteChatMember( chatId, @@ -36,7 +37,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages, canPromoteMembers, canManageVideoChats, - canManageChat + canManageChat, + canManageTopics ) ) @@ -54,7 +56,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, canManageVideoChats: Boolean? = null, - canManageChat: Boolean? = null + canManageChat: Boolean? = null, + canManageTopics: Boolean? = null ) = promoteChatMember( chat.id, userId, @@ -69,7 +72,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages, canPromoteMembers, canManageVideoChats, - canManageChat + canManageChat, + canManageTopics ) suspend fun TelegramBot.promoteChatMember( @@ -86,7 +90,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, canManageVideoChats: Boolean? = null, - canManageChat: Boolean? = null + canManageChat: Boolean? = null, + canManageTopics: Boolean? = null ) = promoteChatMember( chatId, user.id, @@ -101,7 +106,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages, canPromoteMembers, canManageVideoChats, - canManageChat + canManageChat, + canManageTopics ) suspend fun TelegramBot.promoteChatMember( @@ -118,7 +124,8 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, canManageVideoChats: Boolean? = null, - canManageChat: Boolean? = null + canManageChat: Boolean? = null, + canManageTopics: Boolean? = null ) = promoteChatMember( chat.id, user.id, @@ -133,5 +140,6 @@ suspend fun TelegramBot.promoteChatMember( canPinMessages, canPromoteMembers, canManageVideoChats, - canManageChat + canManageChat, + canManageTopics ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt index 4bfe27e29a..7e15264d7f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt @@ -35,7 +35,9 @@ data class PromoteChatMember( @SerialName(canManageVideoChatsField) private val canManageVideoChats: Boolean? = null, @SerialName(canManageChatField) - private val canManageChat: Boolean? = null + private val canManageChat: Boolean? = null, + @SerialName(canManageTopicsField) + private val canManageTopics: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "promoteChatMember" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index fd37ef0ace..2629eb502d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -222,6 +222,7 @@ const val totalVoterCountField = "total_voter_count" const val correctOptionIdField = "correct_option_id" const val allowsMultipleAnswersField = "allows_multiple_answers" const val isAnonymousField = "is_anonymous" +const val canManageTopicsField = "can_manage_topics" const val captionEntitiesField = "caption_entities" const val loginUrlField = "login_url" const val forwardTextField = "forward_text" 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 index f6421cb160..4e2cf26eac 100644 --- 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 @@ -33,7 +33,9 @@ data class AdministratorChatMemberImpl( @SerialName(isAnonymousField) override val isAnonymous: Boolean = false, @SerialName(customTitleField) - override val customTitle: String? = null + override val customTitle: String? = null, + @SerialName(canManageTopicsField) + override val canManageTopics: Boolean = false ) : AdministratorChatMember { @SerialName(statusField) @Required 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 index 683325ed12..4e68b58147 100644 --- 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 @@ -4,6 +4,7 @@ sealed interface SpecialChatAdministratorRights { val canChangeInfo: Boolean val canInviteUsers: Boolean val canPinMessages: Boolean + val canManageTopics: Boolean } sealed interface ChatAdministratorRights : SpecialChatAdministratorRights { 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 index 8f1ea768b3..823f3ebebb 100644 --- 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 @@ -27,5 +27,7 @@ data class ChatAdministratorRightsImpl( @SerialName(canManageChatField) override val canManageChat: Boolean = false, @SerialName(isAnonymousField) - override val isAnonymous: Boolean = false + override val isAnonymous: Boolean = false, + @SerialName(canManageTopicsField) + override val canManageTopics: Boolean = false ) : ChatAdministratorRights diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt index ef730c86ec..30dfcc1a6b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/chat/member/OwnerChatMember.kt @@ -33,7 +33,9 @@ data class OwnerChatMember( @Transient override val canManageVideoChats: Boolean = true @Transient - override val canManageChat: Boolean = true + override val canManageChat: Boolean = true, + @Transient + override val canManageTopics: Boolean = true @SerialName(statusField) @Required private val type: String = "creator" 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 index f28a9ffe1a..c3449784c8 100644 --- 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 @@ -27,7 +27,9 @@ data class RestrictedChatMember( @SerialName(canInviteUsersField) override val canInviteUsers: Boolean = false, @SerialName(canPinMessagesField) - override val canPinMessages: Boolean = false + override val canPinMessages: Boolean = false, + @SerialName(canManageTopicsField) + override val canManageTopics: Boolean = false ) : BannedChatMember, SpecialRightsChatMember { @SerialName(statusField) @Required