1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-06-17 16:55:15 +00:00

implement 'others' changes

This commit is contained in:
2026-05-19 23:24:23 +06:00
parent 236939eab8
commit 631a4f16bd
13 changed files with 384 additions and 40 deletions

View File

@@ -0,0 +1,43 @@
package dev.inmo.tgbotapi.requests
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.limitField
import dev.inmo.tgbotapi.types.message.RawMessage
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
import dev.inmo.tgbotapi.types.message.abstracts.ChatMessage
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
import dev.inmo.tgbotapi.types.userIdField
import kotlinx.serialization.*
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
@Serializable
data class GetUserPersonalChatMessages(
@SerialName(userIdField)
val userId: ChatId,
@SerialName(limitField)
val limit: Int
) : SimpleRequest<List<ChatContentMessage<*>>> {
override fun method(): String = "getUserPersonalChatMessages"
override val resultDeserializer: DeserializationStrategy<List<ChatContentMessage<*>>>
get() = resultSerializer
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
private object MessagesDeserializer : DeserializationStrategy<List<ChatContentMessage<*>>> {
private val rawListSerializer = ListSerializer(RawMessage.serializer())
override val descriptor: SerialDescriptor = rawListSerializer.descriptor
@Suppress("UNCHECKED_CAST")
override fun deserialize(decoder: Decoder): List<ChatContentMessage<*>> {
return rawListSerializer.deserialize(decoder).map {
it.asMessage as ChatContentMessage<*>
}
}
}
companion object {
internal val resultSerializer: DeserializationStrategy<List<ChatContentMessage<*>>> = MessagesDeserializer
}
}

View File

@@ -0,0 +1,19 @@
package dev.inmo.tgbotapi.requests.managed_bots
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.managed_bots.BotAccessSettings
import dev.inmo.tgbotapi.types.userIdField
import kotlinx.serialization.*
@Serializable
data class GetManagedBotAccessSettings(
@SerialName(userIdField)
val userId: ChatId
) : SimpleRequest<BotAccessSettings> {
override fun method(): String = "getManagedBotAccessSettings"
override val resultDeserializer: DeserializationStrategy<BotAccessSettings>
get() = BotAccessSettings.serializer()
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
}

View File

@@ -0,0 +1,26 @@
package dev.inmo.tgbotapi.requests.managed_bots
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.addedUserIdsField
import dev.inmo.tgbotapi.types.isAccessRestrictedField
import dev.inmo.tgbotapi.types.userIdField
import dev.inmo.tgbotapi.utils.serializers.UnitFromBooleanSerializer
import kotlinx.serialization.*
@Serializable
data class SetManagedBotAccessSettings(
@SerialName(userIdField)
val userId: ChatId,
@SerialName(addedUserIdsField)
val addedUserIds: List<ChatId>? = null
) : SimpleRequest<Unit> {
@EncodeDefault
@SerialName(isAccessRestrictedField)
val isAccessRestricted: Boolean = addedUserIds != null
override fun method(): String = "setManagedBotAccessSettings"
override val resultDeserializer: DeserializationStrategy<Unit>
get() = UnitFromBooleanSerializer
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
}

View File

@@ -62,7 +62,7 @@ val getUpdatesLimit = 1 .. 100
val callbackQueryAnswerLength = 0 until 200
val captionLength = 0 .. 1024
val storyCaptionLength = 0 .. 2048
val textLength = 1 .. 4096
val textLength = 0 .. 4096
val userProfilePhotosRequestLimit = 1 .. 100
val userProfileAudiosRequestLimit = 1 .. 100
val chatTitleLength = 1 until 255
@@ -241,6 +241,9 @@ const val maskPositionField = "mask_position"
const val phoneNumberField = "phone_number"
const val userIdField = "user_id"
const val userIdsField = "user_ids"
const val isAccessRestrictedField = "is_access_restricted"
const val addedUsersField = "added_users"
const val addedUserIdsField = "added_user_ids"
const val giftIdField = "gift_id"
const val onlyIfBannedField = "only_if_banned"
const val containsMasksField = "contains_masks"

View File

@@ -0,0 +1,18 @@
package dev.inmo.tgbotapi.types.managed_bots
import dev.inmo.tgbotapi.types.addedUsersField
import dev.inmo.tgbotapi.types.isAccessRestrictedField
import dev.inmo.tgbotapi.types.chat.User
import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class BotAccessSettings(
@SerialName(addedUsersField)
val addedUsers: List<User>? = null
) {
@EncodeDefault
@SerialName(isAccessRestrictedField)
val isAccessRestricted: Boolean = addedUsers != null
}