mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-12-26 16:15:52 +00:00
Compare commits
8 Commits
f2f370e40e
...
7e5064ba3c
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e5064ba3c | |||
| eac45b86a6 | |||
| f0448485c8 | |||
| f2308f0312 | |||
| d480c9efd6 | |||
| a106068af4 | |||
| d55253a81b | |||
| adede330fb |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6,12 +6,15 @@ import dev.inmo.tgbotapi.types.ChatIdentifier
|
||||
import dev.inmo.tgbotapi.types.MessageId
|
||||
import dev.inmo.tgbotapi.types.chat.Chat
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||
import dev.inmo.tgbotapi.types.reactions.Reaction
|
||||
import kotlin.js.JsName
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
chatId: ChatIdentifier,
|
||||
messageId: MessageId,
|
||||
reactions: List<Reaction>,
|
||||
reactions: List<Reaction> = emptyList(),
|
||||
big: Boolean = false
|
||||
) = execute(
|
||||
SetMessageReactions(chatId, messageId, reactions, big)
|
||||
@@ -20,32 +23,100 @@ suspend fun TelegramBot.setMessageReactions(
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
chatId: ChatIdentifier,
|
||||
messageId: MessageId,
|
||||
reaction: Reaction?,
|
||||
reaction: Reaction? = null,
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(chatId, messageId, listOfNotNull(reaction), big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
chat: Chat,
|
||||
messageId: MessageId,
|
||||
reactions: List<Reaction>,
|
||||
reactions: List<Reaction> = emptyList(),
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(chat.id, messageId, reactions, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
chat: Chat,
|
||||
messageId: MessageId,
|
||||
reaction: Reaction?,
|
||||
reaction: Reaction? = null,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(chat.id, messageId, reaction, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
message: AccessibleMessage,
|
||||
reactions: List<Reaction>,
|
||||
meta: Message.MetaInfo,
|
||||
reactions: List<Reaction> = emptyList(),
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(message.chat, message.messageId, reactions, big)
|
||||
) = setMessageReactions(meta.chatId, meta.messageId, reactions, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
meta: Message.MetaInfo,
|
||||
reaction: Reaction? = null,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(meta.chatId, meta.messageId, reaction, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
message: AccessibleMessage,
|
||||
reactions: List<Reaction> = emptyList(),
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(message.metaInfo, reactions, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
message: AccessibleMessage,
|
||||
reaction: Reaction?,
|
||||
reaction: Reaction? = null,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(message.chat, message.messageId, reaction, big)
|
||||
) = setMessageReaction(message.metaInfo, reaction, big)
|
||||
|
||||
@JvmName("setMessageReactionsStrings")
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
chatId: ChatIdentifier,
|
||||
messageId: MessageId,
|
||||
emojis: List<String>,
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(chatId, messageId, emojis.map { Reaction.Emoji(it) }, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
chatId: ChatIdentifier,
|
||||
messageId: MessageId,
|
||||
emoji: String?,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(chatId, messageId, emoji ?.let { Reaction.Emoji(it) }, big)
|
||||
|
||||
@JvmName("setMessageReactionsStrings")
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
chat: Chat,
|
||||
messageId: MessageId,
|
||||
emojis: List<String>,
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(chat, messageId, emojis.map { Reaction.Emoji(it) }, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
chat: Chat,
|
||||
messageId: MessageId,
|
||||
emoji: String?,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(chat, messageId, emoji ?.let { Reaction.Emoji(it) }, big)
|
||||
|
||||
@JvmName("setMessageReactionsStrings")
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
meta: Message.MetaInfo,
|
||||
emojis: List<String>,
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(meta, emojis.map { Reaction.Emoji(it) }, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
meta: Message.MetaInfo,
|
||||
emoji: String?,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(meta, emoji ?.let { Reaction.Emoji(it) }, big)
|
||||
|
||||
@JvmName("setMessageReactionsStrings")
|
||||
suspend fun TelegramBot.setMessageReactions(
|
||||
message: AccessibleMessage,
|
||||
emojis: List<String>,
|
||||
big: Boolean = false
|
||||
) = setMessageReactions(message, emojis.map { Reaction.Emoji(it) }, big)
|
||||
|
||||
suspend fun TelegramBot.setMessageReaction(
|
||||
message: AccessibleMessage,
|
||||
emoji: String?,
|
||||
big: Boolean = false
|
||||
) = setMessageReaction(message, emoji ?.let { Reaction.Emoji(it) }, big)
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package dev.inmo.tgbotapi.types
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Required
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
@Serializable
|
||||
@Serializable(LinkPreviewOptions.Companion::class)
|
||||
sealed interface LinkPreviewOptions {
|
||||
val isDisabled: Boolean
|
||||
val url: String?
|
||||
@@ -76,4 +80,46 @@ sealed interface LinkPreviewOptions {
|
||||
override val preferLargeMedia: Boolean
|
||||
get() = false
|
||||
}
|
||||
|
||||
@Serializable
|
||||
private data class Surrogate(
|
||||
@SerialName(isDisabledField)
|
||||
val isDisabled: Boolean = true,
|
||||
@SerialName(urlField)
|
||||
val url: String? = null,
|
||||
@SerialName(preferSmallMediaField)
|
||||
val preferSmallMedia: Boolean = false,
|
||||
@SerialName(preferLargeMediaField)
|
||||
val preferLargeMedia: Boolean = false,
|
||||
@SerialName(showAboveTextField)
|
||||
val showAboveText: Boolean = false,
|
||||
) {
|
||||
|
||||
}
|
||||
|
||||
companion object : KSerializer<LinkPreviewOptions> {
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = Surrogate.serializer().descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): LinkPreviewOptions {
|
||||
val surrogate = Surrogate.serializer().deserialize(decoder)
|
||||
|
||||
return when {
|
||||
surrogate.isDisabled -> Disabled
|
||||
surrogate.preferLargeMedia -> Large(surrogate.url, surrogate.showAboveText)
|
||||
surrogate.preferSmallMedia -> Small(surrogate.url, surrogate.showAboveText)
|
||||
else -> Medium(surrogate.url, surrogate.showAboveText)
|
||||
}
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: LinkPreviewOptions) {
|
||||
when (value) {
|
||||
is Disabled -> Disabled.serializer().serialize(encoder, value)
|
||||
is Large -> Large.serializer().serialize(encoder, value)
|
||||
is Medium -> Medium.serializer().serialize(encoder, value)
|
||||
is Small -> Small.serializer().serialize(encoder, value)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ data class TextQuote private constructor(
|
||||
val isManual: Boolean = false
|
||||
) : TextedInput {
|
||||
override val textSources: List<TextSource> by lazy {
|
||||
entities ?.asTextSources(text) ?: emptyList()
|
||||
(entities ?: emptyList()).asTextSources(text)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.inmo.tgbotapi.types.reactions
|
||||
|
||||
import dev.inmo.tgbotapi.types.CustomEmojiId
|
||||
import dev.inmo.tgbotapi.types.customEmojiField
|
||||
import dev.inmo.tgbotapi.types.customEmojiIdField
|
||||
import dev.inmo.tgbotapi.types.emojiField
|
||||
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
||||
import kotlinx.serialization.KSerializer
|
||||
@@ -12,6 +12,7 @@ import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.JsonDecoder
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlin.jvm.JvmInline
|
||||
|
||||
@Serializable(Reaction.Companion::class)
|
||||
@ClassCastsIncluded
|
||||
@@ -19,7 +20,8 @@ sealed interface Reaction {
|
||||
val type: String
|
||||
|
||||
@Serializable(Reaction.Companion::class)
|
||||
data class Emoji(
|
||||
@JvmInline
|
||||
value class Emoji(
|
||||
val emoji: String
|
||||
) : Reaction {
|
||||
override val type: String
|
||||
@@ -30,8 +32,9 @@ sealed interface Reaction {
|
||||
}
|
||||
|
||||
@Serializable(Reaction.Companion::class)
|
||||
data class CustomEmoji(
|
||||
val customEmoji: CustomEmojiId
|
||||
@JvmInline
|
||||
value class CustomEmoji(
|
||||
val customEmojiId: CustomEmojiId
|
||||
) : Reaction {
|
||||
override val type: String
|
||||
get() = Companion.type
|
||||
@@ -51,8 +54,8 @@ sealed interface Reaction {
|
||||
val type: String,
|
||||
@SerialName(emojiField)
|
||||
val emoji: String? = null,
|
||||
@SerialName(customEmojiField)
|
||||
val customEmoji: CustomEmojiId? = null
|
||||
@SerialName(customEmojiIdField)
|
||||
val customEmojiId: CustomEmojiId? = null
|
||||
)
|
||||
|
||||
companion object : KSerializer<Reaction> {
|
||||
@@ -69,7 +72,7 @@ sealed interface Reaction {
|
||||
|
||||
return when {
|
||||
surrogate.emoji != null -> Emoji(surrogate.emoji)
|
||||
surrogate.customEmoji != null -> CustomEmoji(surrogate.customEmoji)
|
||||
surrogate.customEmojiId != null -> CustomEmoji(surrogate.customEmojiId)
|
||||
else -> Unknown(surrogate.type, json)
|
||||
}
|
||||
}
|
||||
@@ -83,7 +86,7 @@ sealed interface Reaction {
|
||||
Surrogate(
|
||||
type = value.type,
|
||||
emoji = (value as? Emoji) ?.emoji,
|
||||
customEmoji = (value as? CustomEmoji) ?.customEmoji,
|
||||
customEmojiId = (value as? CustomEmoji) ?.customEmojiId,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user