add opportunity to copy chat permissions

This commit is contained in:
InsanusMokrassar 2023-02-06 11:25:31 +06:00
parent 81fdf50217
commit 9cd1862300
2 changed files with 67 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.types.request.RequestId
import dev.inmo.tgbotapi.types.requestIdField
import dev.inmo.tgbotapi.types.userIsBotField
import dev.inmo.tgbotapi.types.userIsPremiumField
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
@ -14,6 +15,7 @@ import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable(KeyboardButtonRequestUser.Companion::class)
@ClassCastsIncluded
sealed interface KeyboardButtonRequestUser {
val requestId: RequestId
val isBot: Boolean?

View File

@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.types.chat
import dev.inmo.tgbotapi.types.*
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import kotlinx.serialization.descriptors.SerialDescriptor
@ -124,6 +123,37 @@ interface ChatPermissions {
canPinMessages = canPinMessages
)
fun from(
chatPermissions: ChatPermissions,
canSendMessages: Boolean? = chatPermissions.canSendMessages,
canSendAudios: Boolean? = chatPermissions.canSendAudios,
canSendDocuments: Boolean? = chatPermissions.canSendDocuments,
canSendPhotos: Boolean? = chatPermissions.canSendPhotos,
canSendVideos: Boolean? = chatPermissions.canSendVideos,
canSendVideoNotes: Boolean? = chatPermissions.canSendVideoNotes,
canSendVoiceNotes: Boolean? = chatPermissions.canSendVoiceNotes,
canSendPolls: Boolean? = chatPermissions.canSendPolls,
canSendOtherMessages: Boolean? = chatPermissions.canSendOtherMessages,
canAddWebPagePreviews: Boolean? = chatPermissions.canAddWebPagePreviews,
canChangeInfo: Boolean? = chatPermissions.canChangeInfo,
canInviteUsers: Boolean? = chatPermissions.canInviteUsers,
canPinMessages: Boolean? = chatPermissions.canPinMessages
) = ChatPermissions(
canSendMessages = canSendMessages,
canSendAudios = canSendAudios,
canSendDocuments = canSendDocuments,
canSendPhotos = canSendPhotos,
canSendVideos = canSendVideos,
canSendVideoNotes = canSendVideoNotes,
canSendVoiceNotes = canSendVoiceNotes,
canSendPolls = canSendPolls,
canSendOtherMessages = canSendOtherMessages,
canAddWebPagePreviews = canAddWebPagePreviews,
canChangeInfo = canChangeInfo,
canInviteUsers = canInviteUsers,
canPinMessages = canPinMessages
)
private val realSerializer = ChatPermissionsImpl.serializer()
override val descriptor: SerialDescriptor
get() = realSerializer.descriptor
@ -155,6 +185,40 @@ interface ChatPermissions {
)
}
}
/**
* Copying current instance as [ChatPermissions], but realizations of this interface may differently override this
* method
*/
fun defaultCopy(
canSendMessages: Boolean? = this.canSendMessages,
canSendAudios: Boolean? = this.canSendAudios,
canSendDocuments: Boolean? = this.canSendDocuments,
canSendPhotos: Boolean? = this.canSendPhotos,
canSendVideos: Boolean? = this.canSendVideos,
canSendVideoNotes: Boolean? = this.canSendVideoNotes,
canSendVoiceNotes: Boolean? = this.canSendVoiceNotes,
canSendPolls: Boolean? = this.canSendPolls,
canSendOtherMessages: Boolean? = this.canSendOtherMessages,
canAddWebPagePreviews: Boolean? = this.canAddWebPagePreviews,
canChangeInfo: Boolean? = this.canChangeInfo,
canInviteUsers: Boolean? = this.canInviteUsers,
canPinMessages: Boolean? = this.canPinMessages
): ChatPermissions = ChatPermissions(
canSendMessages = canSendPolls,
canSendAudios = null,
canSendDocuments = null,
canSendPhotos = null,
canSendVideos = null,
canSendVideoNotes = null,
canSendVoiceNotes = null,
canSendPolls = canSendPolls,
canSendOtherMessages = canSendOtherMessages,
canAddWebPagePreviews = canAddWebPagePreviews,
canChangeInfo = canChangeInfo,
canInviteUsers = canInviteUsers,
canPinMessages = canPinMessages
)
}
val LeftRestrictionsChatPermissions = ChatPermissions(