mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-24 19:18:44 +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 lastNameField = "last_name"
|
||||||
const val languageCodeField = "language_code"
|
const val languageCodeField = "language_code"
|
||||||
const val addedToAttachmentMenuField = "added_to_attachment_menu"
|
const val addedToAttachmentMenuField = "added_to_attachment_menu"
|
||||||
|
const val allowsWriteToPMField = "allows_write_to_pm"
|
||||||
const val isPremiumField = "is_premium"
|
const val isPremiumField = "is_premium"
|
||||||
const val hasPrivateForwardsField = "has_private_forwards"
|
const val hasPrivateForwardsField = "has_private_forwards"
|
||||||
const val hasRestrictedVoiceAndVideoMessagesField = "has_restricted_voice_and_video_messages"
|
const val hasRestrictedVoiceAndVideoMessagesField = "has_restricted_voice_and_video_messages"
|
||||||
|
@ -1,12 +1,74 @@
|
|||||||
package dev.inmo.tgbotapi.types.message.ChatEvents.forum
|
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.message.ChatEvents.abstracts.ForumEvent
|
||||||
import dev.inmo.tgbotapi.types.webAppNameField
|
import dev.inmo.tgbotapi.types.webAppNameField
|
||||||
|
import kotlinx.serialization.KSerializer
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
|
import kotlinx.serialization.encoding.Decoder
|
||||||
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
|
||||||
@Serializable
|
@Serializable(WriteAccessAllowed.Companion::class)
|
||||||
data class WriteAccessAllowed(
|
sealed interface WriteAccessAllowed : ChatEvent {
|
||||||
@SerialName(webAppNameField)
|
val webAppName: String?
|
||||||
val webAppName: String? = null
|
get() = null
|
||||||
) : ForumEvent
|
val fromRequest: Boolean
|
||||||
|
get() = false
|
||||||
|
val fromAttachmentMenu: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
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?
|
val headerColor: HEXColor?
|
||||||
fun setHeaderColor(color: Color.BackgroundColor)
|
fun setHeaderColor(color: Color.BackgroundColor)
|
||||||
|
fun setHeaderColor(color: Color.Hex)
|
||||||
val backgroundColor: HEXColor?
|
val backgroundColor: HEXColor?
|
||||||
fun setBackgroundColor(color: Color.Hex)
|
fun setBackgroundColor(color: Color.Hex)
|
||||||
fun setBackgroundColor(color: Color.BackgroundColor)
|
fun setBackgroundColor(color: Color.BackgroundColor)
|
||||||
|
@ -20,6 +20,10 @@ external interface WebAppUser {
|
|||||||
val is_premium: Boolean?
|
val is_premium: Boolean?
|
||||||
@JsName(photoUrlField)
|
@JsName(photoUrlField)
|
||||||
val photoUrl: String?
|
val photoUrl: String?
|
||||||
|
@JsName(addedToAttachmentMenuField)
|
||||||
|
val addedToAttachmentMenu: Boolean?
|
||||||
|
@JsName(allowsWriteToPMField)
|
||||||
|
val allowsWriteToPM: Boolean?
|
||||||
}
|
}
|
||||||
|
|
||||||
val WebAppUser.isPremium
|
val WebAppUser.isPremium
|
||||||
|
Loading…
Reference in New Issue
Block a user