mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-09-04 15:49:41 +00:00
Merge branch '25.0.0' into api-v9.0-gifts
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package dev.inmo.tgbotapi.requests.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
|
||||
interface BusinessRequest<T: Any> : Request<T>, WithBusinessConnectionId {
|
||||
interface Simple<T : Any> : BusinessRequest<T>, SimpleRequest<T>
|
||||
interface Multipart<T : Any> : BusinessRequest<T>, MultipartRequest.Common<T>, SimpleRequest<T> {
|
||||
override val data: SimpleRequest<T>
|
||||
get() = this
|
||||
}
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class DeleteBusinessMessages(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(messageIdsField)
|
||||
val messagesIds: List<MessageId>
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "deleteBusinessMessages"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.bioField
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.payments.stars.StarAmount
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class GetBusinessAccountStarBalance(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
) : BusinessRequest.Simple<StarAmount> {
|
||||
override fun method(): String = "getBusinessAccountStarBalance"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<StarAmount>
|
||||
get() = StarAmount.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,62 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||
import dev.inmo.tgbotapi.types.DoubleSeconds
|
||||
import dev.inmo.tgbotapi.types.Seconds
|
||||
import dev.inmo.tgbotapi.types.StickerFormat
|
||||
import dev.inmo.tgbotapi.types.animationField
|
||||
import dev.inmo.tgbotapi.types.mainFrameTimestampField
|
||||
import dev.inmo.tgbotapi.types.photoField
|
||||
import dev.inmo.tgbotapi.utils.deserializeWithRaw
|
||||
import kotlinx.serialization.EncodeDefault
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
|
||||
@Serializable
|
||||
sealed interface InputProfilePhoto {
|
||||
val type: String
|
||||
val mediaPair: Pair<String, MultipartFile>
|
||||
@Serializable
|
||||
data class Static(
|
||||
@SerialName(photoField)
|
||||
val photo: MultipartFile
|
||||
) : InputProfilePhoto {
|
||||
override val mediaPair: Pair<String, MultipartFile>
|
||||
get() = photoField to photo
|
||||
@EncodeDefault
|
||||
override val type: String = "static"
|
||||
}
|
||||
@Serializable
|
||||
data class Animated(
|
||||
@SerialName(animationField)
|
||||
val animation: MultipartFile,
|
||||
@SerialName(mainFrameTimestampField)
|
||||
val mainFrameTimestamp: DoubleSeconds? = null
|
||||
) : InputProfilePhoto {
|
||||
override val mediaPair: Pair<String, MultipartFile>
|
||||
get() = animationField to animation
|
||||
@EncodeDefault
|
||||
override val type: String = "animated"
|
||||
}
|
||||
|
||||
companion object : KSerializer<InputProfilePhoto> {
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = JsonObject.serializer().descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): InputProfilePhoto {
|
||||
error("Deserialization is not supported yet")
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: InputProfilePhoto) {
|
||||
when (value) {
|
||||
is Animated -> Animated.serializer().serialize(encoder, value)
|
||||
is Static -> Static.serializer().serialize(encoder, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class ReadBusinessMessage(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(chatIdField)
|
||||
val chatId: ChatId,
|
||||
@SerialName(messageIdField)
|
||||
val messageId: MessageId
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "readBusinessMessage"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.isPublicField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.photoField
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class RemoveBusinessAccountProfilePhoto(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(isPublicField)
|
||||
val isPublic: Boolean = false
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "removeBusinessAccountProfilePhoto"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.bioField
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class SetBusinessAccountBio(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(bioField)
|
||||
val bio: String
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "setBusinessAccountBio"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class SetBusinessAccountName(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(firstNameField)
|
||||
val firstName: String,
|
||||
@SerialName(lastNameField)
|
||||
val lastName: String? = null
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "setBusinessAccountName"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.isPublicField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.photoField
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class SetBusinessAccountProfilePhoto(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(photoField)
|
||||
val photo: InputProfilePhoto,
|
||||
@SerialName(isPublicField)
|
||||
val isPublic: Boolean = false
|
||||
) : BusinessRequest.Multipart<Boolean> {
|
||||
override fun method(): String = "setBusinessAccountProfilePhoto"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
override val mediaMap: Map<String, MultipartFile> = mapOf(
|
||||
photo.mediaPair
|
||||
)
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class SetBusinessAccountUsername(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(usernameField)
|
||||
val username: Username
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "setBusinessAccountUsername"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
package dev.inmo.tgbotapi.requests.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.BusinessRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.Username
|
||||
import dev.inmo.tgbotapi.types.bioField
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.firstNameField
|
||||
import dev.inmo.tgbotapi.types.lastNameField
|
||||
import dev.inmo.tgbotapi.types.message.RawMessage
|
||||
import dev.inmo.tgbotapi.types.messageIdField
|
||||
import dev.inmo.tgbotapi.types.messageIdsField
|
||||
import dev.inmo.tgbotapi.types.payments.stars.StarAmount
|
||||
import dev.inmo.tgbotapi.types.starCountField
|
||||
import dev.inmo.tgbotapi.types.usernameField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class TransferBusinessAccountStarBalance(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(starCountField)
|
||||
val starCount: Int
|
||||
) : BusinessRequest.Simple<Boolean> {
|
||||
override fun method(): String = "transferBusinessAccountStars"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
@@ -20,6 +20,7 @@ typealias GooglePlaceType = String
|
||||
typealias MembersLimit = Int
|
||||
|
||||
typealias Seconds = Int
|
||||
typealias DoubleSeconds = Double
|
||||
typealias MilliSeconds = Long
|
||||
typealias LongSeconds = Long
|
||||
typealias UnixTimeStamp = LongSeconds
|
||||
@@ -95,7 +96,7 @@ val openPeriodPollSecondsLimit = 5 .. 600
|
||||
val membersLimit = 1 .. 99999
|
||||
|
||||
val suggestedTipAmountsLimit = 1 .. 4
|
||||
|
||||
git
|
||||
val inputFieldPlaceholderLimit = 1 .. 64
|
||||
|
||||
val emojisInStickerLimit = 1 .. 20
|
||||
@@ -187,6 +188,19 @@ const val hasMainWebAppField = "has_main_web_app"
|
||||
const val canJoinGroupsField = "can_join_groups"
|
||||
const val canReadAllGroupMessagesField = "can_read_all_group_messages"
|
||||
const val canReplyField = "can_reply"
|
||||
const val canReadMessagesField = "can_read_messages"
|
||||
const val canDeleteOutgoingMessagesField = "can_delete_outgoing_messages"
|
||||
const val canDeleteAllMessagesField = "can_delete_all_messages"
|
||||
const val canEditNameField = "can_edit_name"
|
||||
const val canEditBioField = "can_edit_bio"
|
||||
const val canEditProfilePhotoField = "can_edit_profile_photo"
|
||||
const val canEditUsernameField = "can_edit_username"
|
||||
const val canChangeGiftSettingsField = "can_change_gift_settings"
|
||||
const val canViewGiftsAndStarsField = "can_view_gifts_and_stars"
|
||||
const val canConvertGiftsToStarsField = "can_convert_gifts_to_stars"
|
||||
const val canTransferAndUpgradeGiftsField = "can_transfer_and_upgrade_gifts"
|
||||
const val canTransferStarsField = "can_transfer_stars"
|
||||
const val canManageStoriesField = "can_manage_stories"
|
||||
const val supportInlineQueriesField = "supports_inline_queries"
|
||||
const val canConnectToBusinessField = "can_connect_to_business"
|
||||
const val textEntitiesField = "text_entities"
|
||||
@@ -494,6 +508,8 @@ const val subscriptionPeriodField = "subscription_period"
|
||||
const val subscriptionPriceField = "subscription_price"
|
||||
const val copyTextField = "copy_text"
|
||||
|
||||
const val isPublicField = "is_public"
|
||||
|
||||
const val giftField = "gift"
|
||||
const val giftsField = "gifts"
|
||||
const val rarityPerMilleField = "rarity_per_mille"
|
||||
@@ -597,6 +613,8 @@ const val voiceField = "voice"
|
||||
const val videoNoteField = "video_note"
|
||||
const val mediaField = "media"
|
||||
|
||||
const val mainFrameTimestampField = "main_frame_timestamp"
|
||||
|
||||
const val disableEditMessageField = "disable_edit_message"
|
||||
const val scoreField = "score"
|
||||
const val forceField = "force"
|
||||
|
@@ -0,0 +1,50 @@
|
||||
package dev.inmo.tgbotapi.types.business_connection
|
||||
|
||||
import dev.inmo.tgbotapi.types.canChangeGiftSettingsField
|
||||
import dev.inmo.tgbotapi.types.canConvertGiftsToStarsField
|
||||
import dev.inmo.tgbotapi.types.canDeleteAllMessagesField
|
||||
import dev.inmo.tgbotapi.types.canDeleteOutgoingMessagesField
|
||||
import dev.inmo.tgbotapi.types.canEditBioField
|
||||
import dev.inmo.tgbotapi.types.canEditNameField
|
||||
import dev.inmo.tgbotapi.types.canEditProfilePhotoField
|
||||
import dev.inmo.tgbotapi.types.canEditUsernameField
|
||||
import dev.inmo.tgbotapi.types.canManageStoriesField
|
||||
import dev.inmo.tgbotapi.types.canReadMessagesField
|
||||
import dev.inmo.tgbotapi.types.canReplyField
|
||||
import dev.inmo.tgbotapi.types.canTransferAndUpgradeGiftsField
|
||||
import dev.inmo.tgbotapi.types.canTransferStarsField
|
||||
import dev.inmo.tgbotapi.types.canViewGiftsAndStarsField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class BusinessBotRights(
|
||||
@SerialName(canReplyField)
|
||||
val canReply: Boolean = false,
|
||||
@SerialName(canReadMessagesField)
|
||||
val canMarkMessagesAsRead: Boolean = false,
|
||||
@SerialName(canDeleteOutgoingMessagesField)
|
||||
val canDeleteOutgoingMessages: Boolean = false,
|
||||
@SerialName(canDeleteAllMessagesField)
|
||||
val canDeleteAllMessages: Boolean = false,
|
||||
@SerialName(canEditNameField)
|
||||
val canEditName: Boolean = false,
|
||||
@SerialName(canEditBioField)
|
||||
val canEditBio: Boolean = false,
|
||||
@SerialName(canEditProfilePhotoField)
|
||||
val canEditProfilePhoto: Boolean = false,
|
||||
@SerialName(canEditUsernameField)
|
||||
val canEditUsername: Boolean = false,
|
||||
@SerialName(canChangeGiftSettingsField)
|
||||
val canChangeGiftSettings: Boolean = false,
|
||||
@SerialName(canViewGiftsAndStarsField)
|
||||
val canViewGiftsAndStars: Boolean = false,
|
||||
@SerialName(canConvertGiftsToStarsField)
|
||||
val canConvertGiftsToStars: Boolean = false,
|
||||
@SerialName(canTransferAndUpgradeGiftsField)
|
||||
val canTransferAndUpgradeGifts: Boolean = false,
|
||||
@SerialName(canTransferStarsField)
|
||||
val canTransferStars: Boolean = false,
|
||||
@SerialName(canManageStoriesField)
|
||||
val canManageStories: Boolean = false,
|
||||
)
|
@@ -16,7 +16,9 @@ sealed interface BusinessConnection : WithBusinessConnectionId {
|
||||
val user: PreviewUser
|
||||
val userChatId: ChatId
|
||||
val date: TelegramDate
|
||||
val rights: BusinessBotRights
|
||||
val canReply: Boolean
|
||||
get() = rights.canReply
|
||||
val isEnabled: Boolean
|
||||
|
||||
override val businessConnectionId: BusinessConnectionId
|
||||
@@ -32,8 +34,8 @@ sealed interface BusinessConnection : WithBusinessConnectionId {
|
||||
override val userChatId: ChatId,
|
||||
@SerialName(dateField)
|
||||
override val date: TelegramDate,
|
||||
@SerialName(canReplyField)
|
||||
override val canReply: Boolean,
|
||||
@SerialName(rightsField)
|
||||
override val rights: BusinessBotRights = BusinessBotRights(),
|
||||
) : BusinessConnection {
|
||||
@EncodeDefault
|
||||
override val isEnabled: Boolean = true
|
||||
@@ -49,8 +51,8 @@ sealed interface BusinessConnection : WithBusinessConnectionId {
|
||||
override val userChatId: ChatId,
|
||||
@SerialName(dateField)
|
||||
override val date: TelegramDate,
|
||||
@SerialName(canReplyField)
|
||||
override val canReply: Boolean,
|
||||
@SerialName(rightsField)
|
||||
override val rights: BusinessBotRights = BusinessBotRights(),
|
||||
) : BusinessConnection {
|
||||
@EncodeDefault
|
||||
override val isEnabled: Boolean = false
|
||||
|
@@ -15,8 +15,8 @@ internal data class RawBusinessConnection(
|
||||
val userChatId: ChatId,
|
||||
@SerialName(dateField)
|
||||
val date: TelegramDate,
|
||||
@SerialName(canReplyField)
|
||||
val canReply: Boolean,
|
||||
@SerialName(rightsField)
|
||||
val rights: BusinessBotRights = BusinessBotRights(),
|
||||
@SerialName(isEnabledField)
|
||||
val isEnabled: Boolean
|
||||
) {
|
||||
@@ -27,14 +27,14 @@ internal data class RawBusinessConnection(
|
||||
user = user,
|
||||
userChatId = userChatId,
|
||||
date = date,
|
||||
canReply = canReply
|
||||
rights = rights
|
||||
)
|
||||
false -> BusinessConnection.Disabled(
|
||||
id = id,
|
||||
user = user,
|
||||
userChatId = userChatId,
|
||||
date = date,
|
||||
canReply = canReply
|
||||
rights = rights
|
||||
)
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ internal data class RawBusinessConnection(
|
||||
user = businessConnection.user,
|
||||
userChatId = businessConnection.userChatId,
|
||||
date = businessConnection.date,
|
||||
canReply = businessConnection.canReply,
|
||||
rights = businessConnection.rights,
|
||||
isEnabled = businessConnection.isEnabled,
|
||||
)
|
||||
}
|
||||
|
@@ -0,0 +1,14 @@
|
||||
package dev.inmo.tgbotapi.types.payments.stars
|
||||
|
||||
import dev.inmo.tgbotapi.types.amountField
|
||||
import dev.inmo.tgbotapi.types.nanostarAmountField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class StarAmount(
|
||||
@SerialName(amountField)
|
||||
val amount: Long,
|
||||
@SerialName(nanostarAmountField)
|
||||
val nanostarAmount: Long = 0,
|
||||
)
|
@@ -0,0 +1,15 @@
|
||||
package dev.inmo.tgbotapi.utils
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.json.JsonDecoder
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
|
||||
fun <T> Decoder.deserializeWithRaw(serializer: KSerializer<T>): Pair<T, JsonElement?> {
|
||||
return if (this is JsonDecoder) {
|
||||
val json = decodeJsonElement()
|
||||
this.json.decodeFromJsonElement(serializer, json) to json
|
||||
} else {
|
||||
serializer.deserialize(this) to null
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user