mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-24 16:26:01 +00:00
improvements and breaking changes in ChatMember hierarchy
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
package dev.inmo.tgbotapi.types.chat.member
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.UntilDate
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable(ChatMemberSerializer::class)
|
||||
sealed interface BannedChatMember : ChatMember, UntilDate
|
||||
@@ -12,7 +12,6 @@ import kotlinx.serialization.builtins.serializer
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import kotlinx.serialization.json.jsonPrimitive
|
||||
|
||||
@@ -28,7 +27,7 @@ sealed interface ChatMember : WithUser {
|
||||
Administrator("administrator", AdministratorChatMemberImpl.serializer()),
|
||||
Member("member", MemberChatMemberImpl.serializer(), { status, json -> status == "member" && json[untilDateField] ?.jsonPrimitive == null }),
|
||||
SubscriptionMember("member", SubscriptionMemberChatMemberImpl.serializer(), { status, json -> status == "member" && json[untilDateField] ?.jsonPrimitive != null }),
|
||||
Restricted("restricted", RestrictedChatMember.serializer()),
|
||||
Restricted("restricted", RestrictedMemberChatMember.serializer()),
|
||||
Left("left", LeftChatMemberImpl.serializer()),
|
||||
Kicked("kicked", KickedChatMember.serializer())
|
||||
}
|
||||
@@ -74,7 +73,7 @@ object ChatMemberSerializer : KSerializer<ChatMember> {
|
||||
is AdministratorChatMemberImpl -> AdministratorChatMemberImpl.serializer().serialize(encoder, value)
|
||||
is SubscriptionMemberChatMemberImpl -> SubscriptionMemberChatMemberImpl.serializer().serialize(encoder, value)
|
||||
is MemberChatMemberImpl -> MemberChatMemberImpl.serializer().serialize(encoder, value)
|
||||
is RestrictedChatMember -> RestrictedChatMember.serializer().serialize(encoder, value)
|
||||
is RestrictedMemberChatMember -> RestrictedMemberChatMember.serializer().serialize(encoder, value)
|
||||
is LeftChatMemberImpl -> LeftChatMemberImpl.serializer().serialize(encoder, value)
|
||||
is KickedChatMember -> KickedChatMember.serializer().serialize(encoder, value)
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ data class KickedChatMember(
|
||||
override val user: User,
|
||||
@SerialName(untilDateField)
|
||||
override val untilDate: TelegramDate? = null
|
||||
) : BannedChatMember {
|
||||
) : RestrictedChatMember {
|
||||
@SerialName(statusField)
|
||||
@Required
|
||||
@EncodeDefault
|
||||
|
||||
@@ -1,49 +1,60 @@
|
||||
package dev.inmo.tgbotapi.types.chat.member
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.UntilDate
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.ChatPermissions
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@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)
|
||||
override val canSendMessages: Boolean = false,
|
||||
@SerialName(canSendAudiosField)
|
||||
override val canSendAudios: Boolean = false,
|
||||
@SerialName(canSendDocumentsField)
|
||||
override val canSendDocuments: Boolean = false,
|
||||
@SerialName(canSendPhotosField)
|
||||
override val canSendPhotos: Boolean = false,
|
||||
@SerialName(canSendVideosField)
|
||||
override val canSendVideos: Boolean = false,
|
||||
@SerialName(canSendVideoNotesField)
|
||||
override val canSendVideoNotes: Boolean = false,
|
||||
@SerialName(canSendVoiceNotesField)
|
||||
override val canSendVoiceNotes: Boolean = false,
|
||||
@SerialName(canSendPollsField)
|
||||
override val canSendPolls: Boolean = false,
|
||||
@SerialName(canSendOtherMessagesField)
|
||||
override val canSendOtherMessages: Boolean = false,
|
||||
@SerialName(canAddWebPagePreviewsField)
|
||||
override 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,
|
||||
@SerialName(canManageTopicsField)
|
||||
override val canManageTopics: Boolean = false
|
||||
) : BannedChatMember, SpecialRightsChatMember, ChatPermissions {
|
||||
@SerialName(statusField)
|
||||
@Required
|
||||
@EncodeDefault
|
||||
override val status: ChatMember.Status = ChatMember.Status.Restricted
|
||||
@Serializable(ChatMemberSerializer::class)
|
||||
sealed interface RestrictedChatMember : ChatMember, UntilDate {
|
||||
companion object {
|
||||
// backward compatibility fun
|
||||
@Deprecated(
|
||||
"Renamed",
|
||||
ReplaceWith(
|
||||
"RestrictedChatMemberImpl(user, untilDate, isMember, canSendMessages, canSendAudios, canSendDocuments, canSendPhotos, canSendVideos, canSendVideoNotes, canSendVoiceNotes, canSendPolls, canSendOtherMessages, canAddWebPagePreviews, canChangeInfo, canInviteUsers, canPinMessages, canManageTopics)",
|
||||
"dev.inmo.tgbotapi.types.chat.members.RestrictedChatMemberImpl",
|
||||
)
|
||||
)
|
||||
operator fun invoke(
|
||||
user: User,
|
||||
untilDate: TelegramDate? = null,
|
||||
isMember: Boolean = false,
|
||||
canSendMessages: Boolean = false,
|
||||
canSendAudios: Boolean = false,
|
||||
canSendDocuments: Boolean = false,
|
||||
canSendPhotos: Boolean = false,
|
||||
canSendVideos: Boolean = false,
|
||||
canSendVideoNotes: Boolean = false,
|
||||
canSendVoiceNotes: Boolean = false,
|
||||
canSendPolls: Boolean = false,
|
||||
canSendOtherMessages: Boolean = false,
|
||||
canAddWebPagePreviews: Boolean = false,
|
||||
canChangeInfo: Boolean = false,
|
||||
canInviteUsers: Boolean = false,
|
||||
canPinMessages: Boolean = false,
|
||||
canManageTopics: Boolean = false
|
||||
) = RestrictedMemberChatMember(
|
||||
user = user,
|
||||
untilDate = untilDate,
|
||||
isMember = isMember,
|
||||
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,
|
||||
canManageTopics = canManageTopics
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated("Renamed", ReplaceWith("RestrictedChatMember", "dev.inmo.tgbotapi.types.chat.member.RestrictedChatMember"))
|
||||
typealias BannedChatMember = RestrictedChatMember
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package dev.inmo.tgbotapi.types.chat.member
|
||||
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.ChatPermissions
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
import kotlinx.serialization.*
|
||||
|
||||
/**
|
||||
* Represents `ChatMemberRestricted` from telegram bots api and means that member is still member of chat but has been
|
||||
* restricted in his rights
|
||||
*/
|
||||
@Serializable
|
||||
data class RestrictedMemberChatMember(
|
||||
@SerialName(userField)
|
||||
override val user: User,
|
||||
@SerialName(untilDateField)
|
||||
override val untilDate: TelegramDate? = null,
|
||||
@SerialName(isMemberField)
|
||||
val isMember: Boolean = false,
|
||||
@SerialName(canSendMessagesField)
|
||||
override val canSendMessages: Boolean = false,
|
||||
@SerialName(canSendAudiosField)
|
||||
override val canSendAudios: Boolean = false,
|
||||
@SerialName(canSendDocumentsField)
|
||||
override val canSendDocuments: Boolean = false,
|
||||
@SerialName(canSendPhotosField)
|
||||
override val canSendPhotos: Boolean = false,
|
||||
@SerialName(canSendVideosField)
|
||||
override val canSendVideos: Boolean = false,
|
||||
@SerialName(canSendVideoNotesField)
|
||||
override val canSendVideoNotes: Boolean = false,
|
||||
@SerialName(canSendVoiceNotesField)
|
||||
override val canSendVoiceNotes: Boolean = false,
|
||||
@SerialName(canSendPollsField)
|
||||
override val canSendPolls: Boolean = false,
|
||||
@SerialName(canSendOtherMessagesField)
|
||||
override val canSendOtherMessages: Boolean = false,
|
||||
@SerialName(canAddWebPagePreviewsField)
|
||||
override 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,
|
||||
@SerialName(canManageTopicsField)
|
||||
override val canManageTopics: Boolean = false
|
||||
) : RestrictedChatMember, SpecialRightsChatMember, MemberChatMember, ChatPermissions {
|
||||
@SerialName(statusField)
|
||||
@Required
|
||||
@EncodeDefault
|
||||
override val status: ChatMember.Status = ChatMember.Status.Restricted
|
||||
}
|
||||
Reference in New Issue
Block a user