1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-11-24 16:26:01 +00:00

UpdateId is value class now

This commit is contained in:
2024-03-16 20:32:18 +06:00
parent bb62f9fbd6
commit ceff85fcfd
37 changed files with 238 additions and 195 deletions

View File

@@ -21,7 +21,7 @@ private val updatesListSerializer = ListSerializer(
*/
@Serializable
data class GetUpdates(
override val offset: UpdateIdentifier? = null,// set `last update id + 1` to receive next part of updates
override val offset: UpdateId? = null,// set `last update id + 1` to receive next part of updates
override val limit: Int = getUpdatesLimit.last,
override val timeout: Seconds? = null,
override val allowed_updates: List<String>? = ALL_UPDATES_LIST

View File

@@ -1,9 +1,8 @@
package dev.inmo.tgbotapi.requests
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.ALL_UPDATES_LIST
import dev.inmo.tgbotapi.types.Seconds
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.getUpdatesLimit
import kotlinx.serialization.DeserializationStrategy
import kotlinx.serialization.Serializable
@@ -16,7 +15,7 @@ import kotlinx.serialization.json.JsonArray
*/
@Serializable
data class GetUpdatesRaw(
override val offset: UpdateIdentifier? = null,// set `last update id + 1` to receive next part of updates
override val offset: UpdateId? = null,// set `last update id + 1` to receive next part of updates
override val limit: Int = getUpdatesLimit.last,
override val timeout: Seconds? = null,
override val allowed_updates: List<String>? = ALL_UPDATES_LIST

View File

@@ -1,14 +1,11 @@
package dev.inmo.tgbotapi.requests
import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.ALL_UPDATES_LIST
import dev.inmo.tgbotapi.types.Seconds
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.getUpdatesLimit
import dev.inmo.tgbotapi.types.UpdateId
interface GetUpdatesRequest<T : Any> : SimpleRequest<T> {
val offset: UpdateIdentifier?
val offset: UpdateId?
val limit: Int
val timeout: Seconds?
val allowed_updates: List<String>?

View File

@@ -11,7 +11,6 @@ import kotlin.jvm.JvmInline
typealias Identifier = Long
typealias MessageIdentifier = MessageId
typealias UpdateIdentifier = Long
typealias ForwardSignature = String
typealias ForwardSenderName = String
typealias AuthorSignature = ForwardSignature

View File

@@ -0,0 +1,20 @@
package dev.inmo.tgbotapi.types
import kotlinx.serialization.Serializable
import kotlin.jvm.JvmInline
@Serializable
@JvmInline
value class UpdateId(
val long: Long
) : Comparable<UpdateId> {
operator fun plus(long: Long) = UpdateId(this.long + long)
operator fun minus(long: Long) = UpdateId(this.long - long)
override fun compareTo(other: UpdateId): Int {
return long.compareTo(other.long)
}
}
@Deprecated("Renamed", ReplaceWith("UpdateId", "dev.inmo.tgbotapi.types.UpdateId"))
typealias UpdateIdentifier = UpdateId

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.queries.callback.CallbackQuery
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class CallbackQueryUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: CallbackQuery
) : Update

View File

@@ -1,11 +1,11 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
data class ChannelPostUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: AccessibleMessage
) : BaseSentMessageUpdate {
override fun copy(newData: AccessibleMessage): BaseSentMessageUpdate = copy(updateId, newData)

View File

@@ -1,14 +1,12 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.boosts.ChatBoostRemoved
import dev.inmo.tgbotapi.types.boosts.ChatBoostUpdated
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update
import kotlinx.serialization.Serializable
@Serializable
data class ChatBoostRemovedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatBoostRemoved
) : Update

View File

@@ -1,13 +1,12 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.boosts.ChatBoostUpdated
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update
import kotlinx.serialization.Serializable
@Serializable
data class ChatBoostUpdatedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatBoostUpdated
) : Update

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.chat.ChatJoinRequest
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class ChatJoinRequestUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatJoinRequest
) : Update

View File

@@ -1,12 +1,12 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update
import kotlinx.serialization.Serializable
@Serializable
data class ChatMessageReactionUpdatedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatMessageReactionUpdated
) : Update

View File

@@ -1,13 +1,12 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionsCountUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update
import kotlinx.serialization.Serializable
@Serializable
data class ChatMessageReactionsCountUpdatedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatMessageReactionsCountUpdated
) : Update

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.ChosenInlineResult
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class ChosenInlineResultUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChosenInlineResult
) : Update

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate
data class CommonChatMemberUpdatedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatMemberUpdated
) : ChatMemberUpdatedUpdate

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
data class EditChannelPostUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: CommonMessage<*>
) : BaseEditMessageUpdate

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
data class EditMessageUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: CommonMessage<*>
) : BaseEditMessageUpdate

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.InlineQueries.query.InlineQuery
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class InlineQueryUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: InlineQuery
) : Update

View File

@@ -1,11 +1,11 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
data class MessageUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: AccessibleMessage
) : BaseSentMessageUpdate {
override fun copy(newData: AccessibleMessage) = copy(updateId, newData)

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate
data class MyChatMemberUpdatedUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ChatMemberUpdated
) : ChatMemberUpdatedUpdate

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.polls.PollAnswer
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class PollAnswerUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: PollAnswer
) : Update

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.polls.Poll
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class PollUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: Poll
) : Update

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class PreCheckoutQueryUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: PreCheckoutQuery
) : Update

View File

@@ -24,7 +24,7 @@ import kotlinx.serialization.json.jsonObject
@Serializable
internal data class RawUpdate constructor(
@SerialName(updateIdField)
val updateId: UpdateIdentifier,
val updateId: UpdateId,
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
private val edited_message: CommonMessage<*>? = null,
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)

View File

@@ -1,10 +1,10 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.payments.ShippingQuery
import dev.inmo.tgbotapi.types.update.abstracts.Update
data class ShippingQueryUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: ShippingQuery
) : Update

View File

@@ -1,7 +1,7 @@
package dev.inmo.tgbotapi.types.update.abstracts
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
import dev.inmo.tgbotapi.types.UpdateIdentifier
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.update.RawUpdate
import dev.inmo.tgbotapi.types.updateIdField
import dev.inmo.tgbotapi.utils.RiskFeature
@@ -17,12 +17,12 @@ import kotlinx.serialization.json.longOrNull
@ClassCastsIncluded
interface Update {
val updateId: UpdateIdentifier
val updateId: UpdateId
val data: Any
}
data class UnknownUpdate(
override val updateId: UpdateIdentifier,
override val updateId: UpdateId,
override val data: JsonElement,
val throwable: Throwable? = null
) : Update {
@@ -60,7 +60,7 @@ object UpdateDeserializationStrategy : DeserializationStrategy<Update> {
)
}.getOrElse {
UnknownUpdate(
(asJson as? JsonObject) ?.get(updateIdField) ?.jsonPrimitive ?.longOrNull ?: -1L,
UpdateId((asJson as? JsonObject) ?.get(updateIdField) ?.jsonPrimitive ?.longOrNull ?: -1L),
asJson,
it
)