mirror of
				https://github.com/InsanusMokrassar/TelegramBotAPI.git
				synced 2025-10-25 09:10:07 +00:00 
			
		
		
		
	update for compiling
This commit is contained in:
		| @@ -7,7 +7,7 @@ kotlin.incremental.js=true | |||||||
|  |  | ||||||
| kotlin_version=1.4.30 | kotlin_version=1.4.30 | ||||||
| kotlin_coroutines_version=1.4.2 | kotlin_coroutines_version=1.4.2 | ||||||
| kotlin_serialisation_runtime_version=1.0.1 | kotlin_serialisation_runtime_version=1.1.0-RC | ||||||
| klock_version=2.0.6 | klock_version=2.0.6 | ||||||
| uuid_version=0.2.3 | uuid_version=0.2.3 | ||||||
| ktor_version=1.5.1 | ktor_version=1.5.1 | ||||||
|   | |||||||
| @@ -17,7 +17,9 @@ class CommonLimiter( | |||||||
|     @Transient |     @Transient | ||||||
|     private val scope: CoroutineScope = CoroutineScope(Dispatchers.Default) |     private val scope: CoroutineScope = CoroutineScope(Dispatchers.Default) | ||||||
| ) : RequestLimiter { | ) : RequestLimiter { | ||||||
|  |     @Transient | ||||||
|     private val quotaSemaphore = Semaphore(lockCount) |     private val quotaSemaphore = Semaphore(lockCount) | ||||||
|  |     @Transient | ||||||
|     private val counterRegeneratorJob = scope.launch { |     private val counterRegeneratorJob = scope.launch { | ||||||
|         val regenDelay: MilliSeconds = (regenTime.toDouble() / lockCount).roundToLong() |         val regenDelay: MilliSeconds = (regenTime.toDouble() / lockCount).roundToLong() | ||||||
|         while (isActive) { |         while (isActive) { | ||||||
|   | |||||||
| @@ -18,6 +18,8 @@ data class SetChatPhoto ( | |||||||
|     override fun method(): String = "setChatPhoto" |     override fun method(): String = "setChatPhoto" | ||||||
|     override val resultDeserializer: DeserializationStrategy<Boolean> |     override val resultDeserializer: DeserializationStrategy<Boolean> | ||||||
|         get() = Boolean.serializer() |         get() = Boolean.serializer() | ||||||
|  |     @Transient | ||||||
|     override val mediaMap: Map<String, MultipartFile> = mapOf(photoField to photo) |     override val mediaMap: Map<String, MultipartFile> = mapOf(photoField to photo) | ||||||
|  |     @Transient | ||||||
|     override val paramsJson: JsonObject = toJson(serializer()) |     override val paramsJson: JsonObject = toJson(serializer()) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| package dev.inmo.tgbotapi.requests.send.polls | package dev.inmo.tgbotapi.requests.send.polls | ||||||
|  |  | ||||||
| import com.soywiz.klock.DateTime | import com.soywiz.klock.DateTime | ||||||
|  | import com.soywiz.klock.TimeSpan | ||||||
| import dev.inmo.tgbotapi.CommonAbstracts.* | import dev.inmo.tgbotapi.CommonAbstracts.* | ||||||
| import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest | import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest | ||||||
| import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest | import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest | ||||||
| @@ -16,6 +17,11 @@ import kotlinx.serialization.* | |||||||
|  |  | ||||||
| private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass() | private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass() | ||||||
|  |  | ||||||
|  | private inline val ApproximateScheduledCloseInfo.openPeriod | ||||||
|  |     get() = openDuration.millisecondsLong.div(1000) | ||||||
|  | private inline val ExactScheduledCloseInfo.closeDate | ||||||
|  |     get() = closeDateTime.unixMillisLong.div(1000) | ||||||
|  |  | ||||||
| private fun checkPollInfo( | private fun checkPollInfo( | ||||||
|     question: String, |     question: String, | ||||||
|     options: List<String> |     options: List<String> | ||||||
| @@ -138,12 +144,23 @@ sealed class SendPoll : SendMessageRequest<ContentMessage<PollContent>>, | |||||||
|     abstract val options: List<String> |     abstract val options: List<String> | ||||||
|     abstract val isAnonymous: Boolean |     abstract val isAnonymous: Boolean | ||||||
|     abstract val isClosed: Boolean |     abstract val isClosed: Boolean | ||||||
|     abstract val closeInfo: ScheduledCloseInfo? |  | ||||||
|     abstract val type: String |     abstract val type: String | ||||||
|  |  | ||||||
|     internal abstract val openPeriod: LongSeconds? |     internal abstract val openPeriod: LongSeconds? | ||||||
|     internal abstract val closeDate: LongSeconds? |     internal abstract val closeDate: LongSeconds? | ||||||
|  |  | ||||||
|  |     protected val creationDate = DateTime.now() | ||||||
|  |     open val closeInfo: ScheduledCloseInfo? | ||||||
|  |         get() { | ||||||
|  |             val openPeriod = openPeriod | ||||||
|  |             val closeDate = closeDate | ||||||
|  |             return when { | ||||||
|  |                 openPeriod != null -> openPeriod.asApproximateScheduledCloseInfo(creationDate) | ||||||
|  |                 closeDate != null -> closeDate.asExactScheduledCloseInfo | ||||||
|  |                 else -> null | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|     override fun method(): String = "sendPoll" |     override fun method(): String = "sendPoll" | ||||||
|     override val resultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> |     override val resultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> | ||||||
|         get() = commonResultDeserializer |         get() = commonResultDeserializer | ||||||
| @@ -163,8 +180,10 @@ data class SendRegularPoll( | |||||||
|     override val isClosed: Boolean = false, |     override val isClosed: Boolean = false, | ||||||
|     @SerialName(allowsMultipleAnswersField) |     @SerialName(allowsMultipleAnswersField) | ||||||
|     val allowMultipleAnswers: Boolean = false, |     val allowMultipleAnswers: Boolean = false, | ||||||
|     @Transient |     @SerialName(openPeriodField) | ||||||
|     override val closeInfo: ScheduledCloseInfo? = null, |     override val openPeriod: LongSeconds?= null, | ||||||
|  |     @SerialName(closeDateField) | ||||||
|  |     override val closeDate: LongSeconds?, | ||||||
|     @SerialName(disableNotificationField) |     @SerialName(disableNotificationField) | ||||||
|     override val disableNotification: Boolean = false, |     override val disableNotification: Boolean = false, | ||||||
|     @SerialName(replyToMessageIdField) |     @SerialName(replyToMessageIdField) | ||||||
| @@ -178,20 +197,39 @@ data class SendRegularPoll( | |||||||
|     override val requestSerializer: SerializationStrategy<*> |     override val requestSerializer: SerializationStrategy<*> | ||||||
|         get() = serializer() |         get() = serializer() | ||||||
|  |  | ||||||
|     @SerialName(openPeriodField) |  | ||||||
|     override val openPeriod: LongSeconds? |  | ||||||
|         = (closeInfo as? ApproximateScheduledCloseInfo) ?.openDuration ?.millisecondsLong ?.div(1000) |  | ||||||
|  |  | ||||||
|     @SerialName(closeDateField) |  | ||||||
|     override val closeDate: LongSeconds? |  | ||||||
|         = (closeInfo as? ExactScheduledCloseInfo) ?.closeDateTime ?.unixMillisLong ?.div(1000) |  | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         checkPollInfo(question, options) |         checkPollInfo(question, options) | ||||||
|         closeInfo ?.checkSendData() |         closeInfo ?.checkSendData() | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | fun SendRegularPoll( | ||||||
|  |     chatId: ChatIdentifier, | ||||||
|  |     question: String, | ||||||
|  |     options: List<String>, | ||||||
|  |     isAnonymous: Boolean = true, | ||||||
|  |     isClosed: Boolean = false, | ||||||
|  |     allowMultipleAnswers: Boolean = false, | ||||||
|  |     closeInfo: ScheduledCloseInfo? = null, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = SendRegularPoll( | ||||||
|  |     chatId, | ||||||
|  |     question, | ||||||
|  |     options, | ||||||
|  |     isAnonymous, | ||||||
|  |     isClosed, | ||||||
|  |     allowMultipleAnswers, | ||||||
|  |     (closeInfo as? ApproximateScheduledCloseInfo) ?.openPeriod, | ||||||
|  |     (closeInfo as? ExactScheduledCloseInfo) ?.closeDate, | ||||||
|  |     disableNotification, | ||||||
|  |     replyToMessageId, | ||||||
|  |     allowSendingWithoutReply, | ||||||
|  |     replyMarkup | ||||||
|  | ) | ||||||
|  |  | ||||||
| fun SendQuizPoll( | fun SendQuizPoll( | ||||||
|     chatId: ChatIdentifier, |     chatId: ChatIdentifier, | ||||||
|     question: String, |     question: String, | ||||||
| @@ -253,6 +291,39 @@ fun SendQuizPoll( | |||||||
|     replyMarkup |     replyMarkup | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | internal fun SendQuizPoll( | ||||||
|  |     chatId: ChatIdentifier, | ||||||
|  |     question: String, | ||||||
|  |     options: List<String>, | ||||||
|  |     correctOptionId: Int, | ||||||
|  |     isAnonymous: Boolean = true, | ||||||
|  |     isClosed: Boolean = false, | ||||||
|  |     explanation: String? = null, | ||||||
|  |     parseMode: ParseMode? = null, | ||||||
|  |     rawEntities: List<RawMessageEntity>? = null, | ||||||
|  |     closeInfo: ScheduledCloseInfo? = null, | ||||||
|  |     disableNotification: Boolean = false, | ||||||
|  |     replyToMessageId: MessageIdentifier? = null, | ||||||
|  |     allowSendingWithoutReply: Boolean? = null, | ||||||
|  |     replyMarkup: KeyboardMarkup? = null | ||||||
|  | ) = SendQuizPoll( | ||||||
|  |     chatId, | ||||||
|  |     question, | ||||||
|  |     options, | ||||||
|  |     correctOptionId, | ||||||
|  |     isAnonymous, | ||||||
|  |     isClosed, | ||||||
|  |     explanation, | ||||||
|  |     parseMode, | ||||||
|  |     rawEntities, | ||||||
|  |     (closeInfo as? ApproximateScheduledCloseInfo) ?.openPeriod, | ||||||
|  |     (closeInfo as? ExactScheduledCloseInfo) ?.closeDate, | ||||||
|  |     disableNotification, | ||||||
|  |     replyToMessageId, | ||||||
|  |     allowSendingWithoutReply, | ||||||
|  |     replyMarkup | ||||||
|  | ) | ||||||
|  |  | ||||||
| @Serializable | @Serializable | ||||||
| data class SendQuizPoll internal constructor( | data class SendQuizPoll internal constructor( | ||||||
|     @SerialName(chatIdField) |     @SerialName(chatIdField) | ||||||
| @@ -273,8 +344,10 @@ data class SendQuizPoll internal constructor( | |||||||
|     override val parseMode: ParseMode? = null, |     override val parseMode: ParseMode? = null, | ||||||
|     @SerialName(explanationEntitiesField) |     @SerialName(explanationEntitiesField) | ||||||
|     private val rawEntities: List<RawMessageEntity>? = null, |     private val rawEntities: List<RawMessageEntity>? = null, | ||||||
|     @Transient |     @SerialName(openPeriodField) | ||||||
|     override val closeInfo: ScheduledCloseInfo? = null, |     override val openPeriod: LongSeconds? = null, | ||||||
|  |     @SerialName(closeDateField) | ||||||
|  |     override val closeDate: LongSeconds? = null, | ||||||
|     @SerialName(disableNotificationField) |     @SerialName(disableNotificationField) | ||||||
|     override val disableNotification: Boolean = false, |     override val disableNotification: Boolean = false, | ||||||
|     @SerialName(replyToMessageIdField) |     @SerialName(replyToMessageIdField) | ||||||
| @@ -291,14 +364,6 @@ data class SendQuizPoll internal constructor( | |||||||
|         rawEntities ?.asTextParts(explanation ?: return@lazy null) ?.justTextSources() |         rawEntities ?.asTextParts(explanation ?: return@lazy null) ?.justTextSources() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SerialName(openPeriodField) |  | ||||||
|     override val openPeriod: LongSeconds? |  | ||||||
|         = (closeInfo as? ApproximateScheduledCloseInfo) ?.openDuration ?.millisecondsLong ?.div(1000) |  | ||||||
|  |  | ||||||
|     @SerialName(closeDateField) |  | ||||||
|     override val closeDate: LongSeconds? |  | ||||||
|         = (closeInfo as? ExactScheduledCloseInfo) ?.closeDateTime ?.unixMillisLong ?.div(1000) |  | ||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         checkPollInfo(question, options) |         checkPollInfo(question, options) | ||||||
|         closeInfo ?.checkSendData() |         closeInfo ?.checkSendData() | ||||||
|   | |||||||
| @@ -4,13 +4,13 @@ import dev.inmo.tgbotapi.types.dataField | |||||||
| import dev.inmo.tgbotapi.types.passport.credentials.DataCredentials | import dev.inmo.tgbotapi.types.passport.credentials.DataCredentials | ||||||
| import dev.inmo.tgbotapi.types.passport.credentials.EndDataCredentials | import dev.inmo.tgbotapi.types.passport.credentials.EndDataCredentials | ||||||
| import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData | import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData | ||||||
| import kotlinx.serialization.SerialName | import kotlinx.serialization.* | ||||||
| import kotlinx.serialization.Serializable |  | ||||||
|  |  | ||||||
| @Serializable | @Serializable | ||||||
| data class AddressSecureValue( | data class AddressSecureValue( | ||||||
|     @SerialName(dataField) |     @SerialName(dataField) | ||||||
|     override val data: DataCredentials |     override val data: DataCredentials | ||||||
| ) : SecureValueWithData { | ) : SecureValueWithData { | ||||||
|  |     @Transient | ||||||
|     override val credentials: List<EndDataCredentials> = listOf(data) |     override val credentials: List<EndDataCredentials> = listOf(data) | ||||||
| } | } | ||||||
| @@ -4,13 +4,13 @@ import dev.inmo.tgbotapi.types.dataField | |||||||
| import dev.inmo.tgbotapi.types.passport.credentials.DataCredentials | import dev.inmo.tgbotapi.types.passport.credentials.DataCredentials | ||||||
| import dev.inmo.tgbotapi.types.passport.credentials.EndDataCredentials | import dev.inmo.tgbotapi.types.passport.credentials.EndDataCredentials | ||||||
| import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData | import dev.inmo.tgbotapi.types.passport.decrypted.abstracts.SecureValueWithData | ||||||
| import kotlinx.serialization.SerialName | import kotlinx.serialization.* | ||||||
| import kotlinx.serialization.Serializable |  | ||||||
|  |  | ||||||
| @Serializable | @Serializable | ||||||
| data class PersonalDetailsSecureValue( | data class PersonalDetailsSecureValue( | ||||||
|     @SerialName(dataField) |     @SerialName(dataField) | ||||||
|     override val data: DataCredentials |     override val data: DataCredentials | ||||||
| ) : SecureValueWithData { | ) : SecureValueWithData { | ||||||
|  |     @Transient | ||||||
|     override val credentials: List<EndDataCredentials> = listOf(data) |     override val credentials: List<EndDataCredentials> = listOf(data) | ||||||
| } | } | ||||||
| @@ -33,6 +33,9 @@ val LongSeconds.asApproximateScheduledCloseInfo | |||||||
|     get() = ApproximateScheduledCloseInfo( |     get() = ApproximateScheduledCloseInfo( | ||||||
|         TimeSpan(this * 1000.0) |         TimeSpan(this * 1000.0) | ||||||
|     ) |     ) | ||||||
|  | fun LongSeconds.asApproximateScheduledCloseInfo(startPoint: DateTime) = ApproximateScheduledCloseInfo( | ||||||
|  |     TimeSpan(this * 1000.0), startPoint | ||||||
|  | ) | ||||||
| val LongSeconds.asExactScheduledCloseInfo | val LongSeconds.asExactScheduledCloseInfo | ||||||
|     get() = ExactScheduledCloseInfo( |     get() = ExactScheduledCloseInfo( | ||||||
|         DateTime(unixMillis = this * 1000.0) |         DateTime(unixMillis = this * 1000.0) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user