mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 00:03:48 +00:00
add support of several new things in bot api
This commit is contained in:
parent
156fbd72d4
commit
034e87a8ef
@ -210,6 +210,7 @@ const val firstNameField = "first_name"
|
||||
const val lastNameField = "last_name"
|
||||
const val languageCodeField = "language_code"
|
||||
const val addedToAttachmentMenuField = "added_to_attachment_menu"
|
||||
const val allowsWriteToPMField = "allows_write_to_pm"
|
||||
const val isPremiumField = "is_premium"
|
||||
const val hasPrivateForwardsField = "has_private_forwards"
|
||||
const val hasRestrictedVoiceAndVideoMessagesField = "has_restricted_voice_and_video_messages"
|
||||
|
@ -1,12 +1,74 @@
|
||||
package dev.inmo.tgbotapi.types.message.ChatEvents.forum
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ForumEvent
|
||||
import dev.inmo.tgbotapi.types.webAppNameField
|
||||
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
|
||||
|
||||
@Serializable(WriteAccessAllowed.Companion::class)
|
||||
sealed interface WriteAccessAllowed : ChatEvent {
|
||||
val webAppName: String?
|
||||
get() = null
|
||||
val fromRequest: Boolean
|
||||
get() = false
|
||||
val fromAttachmentMenu: Boolean
|
||||
get() = false
|
||||
|
||||
@Serializable
|
||||
data class WriteAccessAllowed(
|
||||
@SerialName(webAppNameField)
|
||||
val webAppName: String? = null
|
||||
) : ForumEvent
|
||||
object Other : WriteAccessAllowed
|
||||
@Serializable
|
||||
data class FromWebAppLink(
|
||||
override val webAppName: String
|
||||
) : WriteAccessAllowed
|
||||
@Serializable
|
||||
object FromRequest : WriteAccessAllowed {
|
||||
override val fromRequest: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
@Serializable
|
||||
object FromAttachmentMenu : WriteAccessAllowed {
|
||||
override val fromAttachmentMenu: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
@Serializable
|
||||
private class WriteAccessAllowedRaw(
|
||||
val web_app_name: String? = null,
|
||||
val from_request: Boolean = false,
|
||||
val from_attachment_menu: Boolean = false
|
||||
)
|
||||
|
||||
companion object : KSerializer<WriteAccessAllowed> {
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = WriteAccessAllowedRaw.serializer().descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): WriteAccessAllowed {
|
||||
val raw = WriteAccessAllowedRaw.serializer().deserialize(decoder)
|
||||
|
||||
return when {
|
||||
raw.web_app_name != null -> FromWebAppLink(raw.web_app_name)
|
||||
raw.from_request -> FromRequest
|
||||
raw.from_attachment_menu -> Other
|
||||
else -> Other
|
||||
}
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: WriteAccessAllowed) {
|
||||
val raw = when (value) {
|
||||
FromAttachmentMenu -> WriteAccessAllowedRaw(from_attachment_menu = true)
|
||||
FromRequest -> WriteAccessAllowedRaw(from_request = true)
|
||||
Other -> WriteAccessAllowedRaw()
|
||||
is FromWebAppLink -> WriteAccessAllowedRaw(web_app_name = value.webAppName)
|
||||
}
|
||||
WriteAccessAllowedRaw.serializer().serialize(encoder, raw)
|
||||
}
|
||||
|
||||
operator fun invoke(webAppName: String?): WriteAccessAllowed = webAppName ?.let(::FromWebAppLink) ?: Other
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ external class WebApp {
|
||||
|
||||
val headerColor: HEXColor?
|
||||
fun setHeaderColor(color: Color.BackgroundColor)
|
||||
fun setHeaderColor(color: Color.Hex)
|
||||
val backgroundColor: HEXColor?
|
||||
fun setBackgroundColor(color: Color.Hex)
|
||||
fun setBackgroundColor(color: Color.BackgroundColor)
|
||||
|
@ -20,6 +20,10 @@ external interface WebAppUser {
|
||||
val is_premium: Boolean?
|
||||
@JsName(photoUrlField)
|
||||
val photoUrl: String?
|
||||
@JsName(addedToAttachmentMenuField)
|
||||
val addedToAttachmentMenu: Boolean?
|
||||
@JsName(allowsWriteToPMField)
|
||||
val allowsWriteToPM: Boolean?
|
||||
}
|
||||
|
||||
val WebAppUser.isPremium
|
||||
|
Loading…
Reference in New Issue
Block a user