mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-09-03 15:19:30 +00:00
feat: added the giftPremiumSubscription method
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package dev.inmo.tgbotapi.extensions.api.gifts
|
||||
|
||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
import dev.inmo.tgbotapi.requests.gifts.GiftPremiumSubscription
|
||||
import dev.inmo.tgbotapi.types.UserId
|
||||
import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
|
||||
public suspend fun TelegramBot.giftPremiumSubscription(
|
||||
userId: UserId,
|
||||
monthCount: Int,
|
||||
starCount: Int,
|
||||
text: String,
|
||||
parseMode: ParseMode?
|
||||
): Boolean = execute(
|
||||
GiftPremiumSubscription(
|
||||
userId, monthCount, starCount, text, parseMode
|
||||
)
|
||||
)
|
||||
|
||||
public suspend fun TelegramBot.giftPremiumSubscription(
|
||||
userId: UserId,
|
||||
monthCount: Int,
|
||||
starCount: Int,
|
||||
textSources: TextSourcesList? = null,
|
||||
): Boolean = execute(
|
||||
GiftPremiumSubscription(
|
||||
userId, monthCount, starCount, textSources
|
||||
)
|
||||
)
|
@@ -0,0 +1,83 @@
|
||||
package dev.inmo.tgbotapi.requests.gifts
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.TextedOutput
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.UserId
|
||||
import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntities
|
||||
import dev.inmo.tgbotapi.types.message.asTextSources
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
import dev.inmo.tgbotapi.types.message.toRawMessageEntities
|
||||
import dev.inmo.tgbotapi.types.monthCountField
|
||||
import dev.inmo.tgbotapi.types.starCountField
|
||||
import dev.inmo.tgbotapi.types.textEntitiesField
|
||||
import dev.inmo.tgbotapi.types.textField
|
||||
import dev.inmo.tgbotapi.types.textParseModeField
|
||||
import dev.inmo.tgbotapi.types.userIdField
|
||||
import dev.inmo.tgbotapi.utils.extensions.makeSourceString
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@Serializable
|
||||
data class GiftPremiumSubscription internal constructor(
|
||||
@SerialName(userIdField)
|
||||
val userId: UserId,
|
||||
@SerialName(monthCountField)
|
||||
val monthCount: Int,
|
||||
@SerialName(starCountField)
|
||||
val starCount: Int,
|
||||
@SerialName(textField)
|
||||
override val text: String? = null,
|
||||
@SerialName(textParseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(textEntitiesField)
|
||||
private val rawEntities: RawMessageEntities? = null,
|
||||
) : SimpleRequest<Boolean>, TextedOutput {
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities?.let {
|
||||
text?.let { _ ->
|
||||
it.asTextSources(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = "sendPremiumGift"
|
||||
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
||||
get() = Boolean.serializer()
|
||||
|
||||
constructor(
|
||||
userId: UserId,
|
||||
monthCount: Int,
|
||||
starCount: Int,
|
||||
text: String,
|
||||
parseMode: ParseMode?
|
||||
) : this(
|
||||
userId = userId,
|
||||
monthCount = monthCount,
|
||||
starCount = starCount,
|
||||
text = text,
|
||||
parseMode = parseMode,
|
||||
rawEntities = null,
|
||||
)
|
||||
|
||||
constructor(
|
||||
userId: UserId,
|
||||
monthCount: Int,
|
||||
starCount: Int,
|
||||
textSources: TextSourcesList? = null
|
||||
) : this(
|
||||
userId = userId,
|
||||
monthCount = monthCount,
|
||||
starCount = starCount,
|
||||
text = textSources?.makeSourceString(),
|
||||
parseMode = null,
|
||||
rawEntities = textSources?.toRawMessageEntities()
|
||||
)
|
||||
}
|
@@ -654,6 +654,7 @@ const val onlyNewMembersField = "only_new_members"
|
||||
const val hasPublicWinnersField = "has_public_winners"
|
||||
const val prizeDescriptionField = "prize_description"
|
||||
const val premiumSubscriptionMonthCountField = "premium_subscription_month_count"
|
||||
const val monthCountField = "month_count"
|
||||
const val winnersField = "winners"
|
||||
const val additionalChatCountField = "additional_chat_count"
|
||||
const val unclaimedPrizeCountField = "unclaimed_prize_count"
|
||||
|
@@ -48,6 +48,8 @@ sealed interface TransactionPartner {
|
||||
data class User(
|
||||
@SerialName(userField)
|
||||
val user: PreviewUser,
|
||||
@SerialName(transactionTypeField)
|
||||
val transactionType: String,
|
||||
@SerialName(affiliateField)
|
||||
val affiliate: AffiliateInfo? = null,
|
||||
@SerialName(invoicePayloadField)
|
||||
@@ -63,8 +65,6 @@ sealed interface TransactionPartner {
|
||||
val gift: Gift? = null,
|
||||
@SerialName(premiumSubscriptionDurationField)
|
||||
val premiumSubscriptionDuration: Int? = null,
|
||||
@SerialName(transactionTypeField)
|
||||
val transactionType: String,
|
||||
) : TransactionPartner, SubscriptionPeriodInfo {
|
||||
@EncodeDefault
|
||||
override val type: String = Companion.type
|
||||
|
Reference in New Issue
Block a user