mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-06-20 18:25:13 +00:00
implement guest mode and make HUGE CHANGES IN MESSAGES HIERARCHY
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
package dev.inmo.tgbotapi.abstracts.types
|
||||
|
||||
import dev.inmo.tgbotapi.types.GuestQueryId
|
||||
|
||||
interface WithOptionalGuestQueryId {
|
||||
val guestQueryId: GuestQueryId?
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.inmo.tgbotapi.requests.answers
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.GuestQueryId
|
||||
import dev.inmo.tgbotapi.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult
|
||||
import dev.inmo.tgbotapi.types.guest.SentGuestMessage
|
||||
import dev.inmo.tgbotapi.types.guestQueryIdField
|
||||
import dev.inmo.tgbotapi.types.resultField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class AnswerGuestQuery(
|
||||
@SerialName(guestQueryIdField)
|
||||
val guestQueryId: GuestQueryId,
|
||||
@SerialName(resultField)
|
||||
val result: InlineQueryResult
|
||||
) : SimpleRequest<SentGuestMessage> {
|
||||
override fun method(): String = "answerGuestQuery"
|
||||
override val resultDeserializer: DeserializationStrategy<SentGuestMessage>
|
||||
get() = SentGuestMessage.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
||||
@@ -14,13 +14,14 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.checklists.Checklist
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.ChecklistContent
|
||||
import dev.inmo.tgbotapi.types.message.content.GameContent
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<ChecklistContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<ChecklistContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@Serializable
|
||||
@@ -41,7 +42,7 @@ data class SendChecklist (
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendChatMessageRequest<ContentMessage<ChecklistContent>>,
|
||||
) : SendChatMessageRequest<ChatContentMessage<ChecklistContent>>,
|
||||
WithReplyParameters,
|
||||
DisableNotification,
|
||||
ProtectContent,
|
||||
@@ -68,7 +69,7 @@ data class SendChecklist (
|
||||
)
|
||||
|
||||
override fun method(): String = "sendChecklist"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<ChecklistContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<ChecklistContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -7,12 +7,13 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.ContactContent
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<ContactContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<ContactContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@Serializable
|
||||
@@ -49,8 +50,8 @@ data class SendContact(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<ContactContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<ContactContent>>
|
||||
) : SendContentMessageRequest<ChatContentMessage<ContactContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<ContactContent>>
|
||||
{
|
||||
constructor(
|
||||
chatId: ChatIdentifier,
|
||||
@@ -83,7 +84,7 @@ data class SendContact(
|
||||
)
|
||||
|
||||
override fun method(): String = "sendContact"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<ContactContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<ContactContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -10,12 +10,13 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.dice.DiceAnimationType
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.DiceContent
|
||||
import kotlinx.serialization.*
|
||||
|
||||
internal val DiceContentMessageResultDeserializer: DeserializationStrategy<ContentMessage<DiceContent>>
|
||||
internal val DiceContentMessageResultDeserializer: DeserializationStrategy<ChatContentMessage<DiceContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@Serializable
|
||||
@@ -48,13 +49,13 @@ data class SendDice(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<DiceContent>>, ReplyingMarkupSendMessageRequest<ContentMessage<DiceContent>>, WithReplyParameters, DisableNotification,
|
||||
) : SendContentMessageRequest<ChatContentMessage<DiceContent>>, ReplyingMarkupSendMessageRequest<ChatContentMessage<DiceContent>>, WithReplyParameters, DisableNotification,
|
||||
OptionallyBusinessConnectionRequest {
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
override fun method(): String = "sendDice"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<DiceContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<DiceContent>>
|
||||
get() = DiceContentMessageResultDeserializer
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.location.LiveLocation
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.*
|
||||
@@ -17,13 +18,13 @@ import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<LocationContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<LocationContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
private val liveResultDeserializer: DeserializationStrategy<ContentMessage<LiveLocationContent>>
|
||||
private val liveResultDeserializer: DeserializationStrategy<ChatContentMessage<LiveLocationContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
private val staticResultDeserializer: DeserializationStrategy<ContentMessage<StaticLocationContent>>
|
||||
private val staticResultDeserializer: DeserializationStrategy<ChatContentMessage<StaticLocationContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
fun SendLocation(
|
||||
@@ -125,9 +126,9 @@ fun SendLiveLocation(
|
||||
)
|
||||
|
||||
@Serializable(SendLocation.Companion::class)
|
||||
sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<ContentMessage<T>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<T>>,
|
||||
PositionedSendMessageRequest<ContentMessage<T>>,
|
||||
sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<ChatContentMessage<T>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<T>>,
|
||||
PositionedSendMessageRequest<ChatContentMessage<T>>,
|
||||
HorizontallyAccured,
|
||||
Livable,
|
||||
ProximityAlertable,
|
||||
@@ -179,7 +180,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendLocation<LiveLocationContent> {
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<LiveLocationContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<LiveLocationContent>>
|
||||
get() = liveResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
@@ -237,7 +238,7 @@ sealed interface SendLocation<T : LocationContent> : SendContentMessageRequest<C
|
||||
get() = null
|
||||
override val proximityAlertRadius: Meters?
|
||||
get() = null
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<StaticLocationContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<StaticLocationContent>>
|
||||
get() = staticResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -10,6 +10,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||
@@ -18,7 +19,7 @@ import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||
import kotlinx.serialization.*
|
||||
|
||||
internal val TextContentMessageResultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||
internal val TextContentMessageResultDeserializer: DeserializationStrategy<ChatContentMessage<TextContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
fun SendTextMessage(
|
||||
@@ -123,9 +124,9 @@ data class SendTextMessage internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<TextContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<TextContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<TextContent>>,
|
||||
) : SendContentMessageRequest<ChatContentMessage<TextContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<TextContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<TextContent>>,
|
||||
LinkPreviewOptionsContainer
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
@@ -139,7 +140,7 @@ data class SendTextMessage internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendMessage"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<TextContent>>
|
||||
get() = TextContentMessageResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -5,13 +5,14 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.VenueContent
|
||||
import dev.inmo.tgbotapi.types.venue.Venue
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VenueContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<VenueContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@Serializable
|
||||
@@ -58,10 +59,10 @@ data class SendVenue(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<VenueContent>>,
|
||||
PositionedSendMessageRequest<ContentMessage<VenueContent>>,
|
||||
TitledSendMessageRequest<ContentMessage<VenueContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<VenueContent>>
|
||||
) : SendContentMessageRequest<ChatContentMessage<VenueContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<VenueContent>>,
|
||||
TitledSendMessageRequest<ChatContentMessage<VenueContent>>,
|
||||
PositionedSendMessageRequest<ChatContentMessage<VenueContent>>
|
||||
{
|
||||
constructor(
|
||||
chatId: ChatIdentifier,
|
||||
@@ -99,7 +100,7 @@ data class SendVenue(
|
||||
)
|
||||
|
||||
override fun method(): String = "sendVenue"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<VenueContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<VenueContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -7,12 +7,13 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.GameContent
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<GameContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<GameContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@Serializable
|
||||
@@ -45,10 +46,10 @@ data class SendGame (
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<GameContent>>,
|
||||
) : SendContentMessageRequest<ChatContentMessage<GameContent>>,
|
||||
WithReplyMarkup {
|
||||
override fun method(): String = "sendGame"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<GameContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<GameContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -14,6 +14,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.AnimationContent
|
||||
@@ -44,7 +45,7 @@ fun SendAnimation(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<AnimationContent>> {
|
||||
): Request<ChatContentMessage<AnimationContent>> {
|
||||
val animationAsFile = animation as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -102,7 +103,7 @@ fun SendAnimation(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<AnimationContent>> {
|
||||
): Request<ChatContentMessage<AnimationContent>> {
|
||||
val animationAsFile = animation as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -140,7 +141,7 @@ fun SendAnimation(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<AnimationContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<AnimationContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -192,14 +193,14 @@ data class SendAnimationData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<AnimationContent>>,
|
||||
SendContentMessageRequest<ContentMessage<AnimationContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||
ThumbedSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||
DuratedSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||
SizedSendMessageRequest<ContentMessage<AnimationContent>>,
|
||||
WithCustomizableCaptionRequest<ContentMessage<AnimationContent>>,
|
||||
) : DataRequest<ChatContentMessage<AnimationContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
ThumbedSendMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
DuratedSendMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
SizedSendMessageRequest<ChatContentMessage<AnimationContent>>,
|
||||
WithCustomizableCaptionRequest<ChatContentMessage<AnimationContent>>,
|
||||
OptionallyWithSpoilerRequest
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
@@ -215,7 +216,7 @@ data class SendAnimationData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendAnimation"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<AnimationContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<AnimationContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -15,6 +15,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.AudioContent
|
||||
@@ -43,7 +44,7 @@ fun SendAudio(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<AudioContent>> {
|
||||
): Request<ChatContentMessage<AudioContent>> {
|
||||
val audioAsFile = audio as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -97,7 +98,7 @@ fun SendAudio(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<AudioContent>> {
|
||||
): Request<ChatContentMessage<AudioContent>> {
|
||||
val audioAsFile = audio as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -133,7 +134,7 @@ fun SendAudio(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<AudioContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<AudioContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -181,13 +182,13 @@ data class SendAudioData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<AudioContent>>,
|
||||
SendContentMessageRequest<ContentMessage<AudioContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<AudioContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<AudioContent>>,
|
||||
ThumbedSendMessageRequest<ContentMessage<AudioContent>>,
|
||||
TitledSendMessageRequest<ContentMessage<AudioContent>>,
|
||||
DuratedSendMessageRequest<ContentMessage<AudioContent>>,
|
||||
) : DataRequest<ChatContentMessage<AudioContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
ThumbedSendMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
TitledSendMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
DuratedSendMessageRequest<ChatContentMessage<AudioContent>>,
|
||||
Performerable
|
||||
{
|
||||
override val textSources: List<TextSource>? by lazy {
|
||||
@@ -203,7 +204,7 @@ data class SendAudioData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendAudio"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<AudioContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<AudioContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -14,6 +14,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.DocumentContent
|
||||
@@ -49,7 +50,7 @@ fun SendDocument(
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null,
|
||||
disableContentTypeDetection: Boolean? = null
|
||||
): Request<ContentMessage<DocumentContent>> {
|
||||
): Request<ChatContentMessage<DocumentContent>> {
|
||||
val documentAsFile = document as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -108,7 +109,7 @@ fun SendDocument(
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null,
|
||||
disableContentTypeDetection: Boolean? = null
|
||||
): Request<ContentMessage<DocumentContent>> {
|
||||
): Request<ChatContentMessage<DocumentContent>> {
|
||||
val documentAsFile = document as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -142,7 +143,7 @@ fun SendDocument(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<DocumentContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<DocumentContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
/**
|
||||
@@ -195,11 +196,11 @@ data class SendDocumentData internal constructor(
|
||||
override val replyMarkup: KeyboardMarkup? = null,
|
||||
@SerialName(disableContentTypeDetectionField)
|
||||
val disableContentTypeDetection: Boolean? = null
|
||||
) : DataRequest<ContentMessage<DocumentContent>>,
|
||||
SendContentMessageRequest<ContentMessage<DocumentContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<DocumentContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<DocumentContent>>,
|
||||
ThumbedSendMessageRequest<ContentMessage<DocumentContent>>
|
||||
) : DataRequest<ChatContentMessage<DocumentContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<DocumentContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<DocumentContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<DocumentContent>>,
|
||||
ThumbedSendMessageRequest<ChatContentMessage<DocumentContent>>
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text ?: return@lazy null)
|
||||
@@ -214,7 +215,7 @@ data class SendDocumentData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendDocument"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<DocumentContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<DocumentContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -14,6 +14,7 @@ import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.LivePhotoContent
|
||||
@@ -41,7 +42,7 @@ fun SendLivePhoto(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<LivePhotoContent>> {
|
||||
): Request<ChatContentMessage<LivePhotoContent>> {
|
||||
val livePhotoAsFile = livePhoto as? MultipartFile
|
||||
val photoAsFile = photo as? MultipartFile
|
||||
|
||||
@@ -93,7 +94,7 @@ fun SendLivePhoto(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<LivePhotoContent>> {
|
||||
): Request<ChatContentMessage<LivePhotoContent>> {
|
||||
val livePhotoAsFile = livePhoto as? MultipartFile
|
||||
val photoAsFile = photo as? MultipartFile
|
||||
|
||||
@@ -128,7 +129,7 @@ fun SendLivePhoto(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<LivePhotoContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<LivePhotoContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -174,11 +175,11 @@ data class SendLivePhotoData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<LivePhotoContent>>,
|
||||
SendContentMessageRequest<ContentMessage<LivePhotoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<LivePhotoContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<LivePhotoContent>>,
|
||||
WithCustomizableCaptionRequest<ContentMessage<LivePhotoContent>>,
|
||||
) : DataRequest<ChatContentMessage<LivePhotoContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<LivePhotoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<LivePhotoContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<LivePhotoContent>>,
|
||||
WithCustomizableCaptionRequest<ChatContentMessage<LivePhotoContent>>,
|
||||
OptionallyWithSpoilerRequest
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
@@ -194,7 +195,7 @@ data class SendLivePhotoData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendLivePhoto"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<LivePhotoContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<LivePhotoContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -11,8 +11,9 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.media.*
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass
|
||||
import dev.inmo.tgbotapi.types.message.content.MediaGroupPartContent
|
||||
import dev.inmo.tgbotapi.types.message.content.VisualMediaGroupPartContent
|
||||
@@ -44,7 +45,7 @@ fun <T : MediaGroupPartContent> SendMediaGroup(
|
||||
effectId: EffectId? = null,
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null
|
||||
): Request<ContentMessage<MediaGroupContent<T>>> {
|
||||
): Request<ChatContentMessage<MediaGroupContent<T>>> {
|
||||
if (media.size !in mediaCountInMediaGroup) {
|
||||
throwRangeError("Count of members in media group", mediaCountInMediaGroup, media.size)
|
||||
}
|
||||
@@ -87,7 +88,7 @@ fun <T : MediaGroupPartContent> SendMediaGroup(
|
||||
data,
|
||||
files.associateBy { it.fileId }
|
||||
)
|
||||
}) as Request<ContentMessage<MediaGroupContent<T>>>
|
||||
}) as Request<ChatContentMessage<MediaGroupContent<T>>>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,16 +188,16 @@ inline fun SendVisualMediaGroup(
|
||||
replyParameters = replyParameters
|
||||
)
|
||||
|
||||
private object MessagesListSerializer: KSerializer<PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>>> {
|
||||
private val serializer = ListSerializer(TelegramBotAPIMessageDeserializeOnlySerializerClass<PossiblySentViaBotCommonMessage<MediaGroupPartContent>>())
|
||||
private object MessagesListSerializer: KSerializer<CommonContentMessage<MediaGroupContent<MediaGroupPartContent>>> {
|
||||
private val serializer = ListSerializer(TelegramBotAPIMessageDeserializeOnlySerializerClass<CommonContentMessage<MediaGroupPartContent>>())
|
||||
override val descriptor: SerialDescriptor = serializer.descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>> {
|
||||
override fun deserialize(decoder: Decoder): CommonContentMessage<MediaGroupContent<MediaGroupPartContent>> {
|
||||
val messages = serializer.deserialize(decoder)
|
||||
return messages.asMediaGroupMessage()
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>>) {
|
||||
override fun serialize(encoder: Encoder, value: CommonContentMessage<MediaGroupContent<MediaGroupPartContent>>) {
|
||||
serializer.serialize(encoder, value.content.group.map { it.sourceMessage })
|
||||
}
|
||||
|
||||
@@ -230,8 +231,8 @@ data class SendMediaGroupData internal constructor(
|
||||
override val suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
@SerialName(replyParametersField)
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
) : DataRequest<PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>>>,
|
||||
SendContentMessageRequest<PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>>> {
|
||||
) : DataRequest<CommonContentMessage<MediaGroupContent<MediaGroupPartContent>>>,
|
||||
SendContentMessageRequest<CommonContentMessage<MediaGroupContent<MediaGroupPartContent>>> {
|
||||
@Suppress("unused")
|
||||
@SerialName(mediaField)
|
||||
private val convertedMedia: String
|
||||
@@ -245,7 +246,7 @@ data class SendMediaGroupData internal constructor(
|
||||
override fun method(): String = "sendMediaGroup"
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
override val resultDeserializer: DeserializationStrategy<PossiblySentViaBotCommonMessage<MediaGroupContent<MediaGroupPartContent>>>
|
||||
override val resultDeserializer: DeserializationStrategy<CommonContentMessage<MediaGroupContent<MediaGroupPartContent>>>
|
||||
get() = MessagesListSerializer
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import dev.inmo.tgbotapi.types.media.CoveredTelegramMedia
|
||||
import dev.inmo.tgbotapi.types.media.ThumbedTelegramMedia
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.toRawMessageEntities
|
||||
@@ -42,7 +43,7 @@ fun SendPaidMedia(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<PaidMediaInfoContent>> {
|
||||
): Request<ChatContentMessage<PaidMediaInfoContent>> {
|
||||
val data = SendPaidMediaData(
|
||||
chatId = chatId,
|
||||
starCount = starCount,
|
||||
@@ -105,7 +106,7 @@ fun SendPaidMedia(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<PaidMediaInfoContent>> {
|
||||
): Request<ChatContentMessage<PaidMediaInfoContent>> {
|
||||
val data = SendPaidMediaData(
|
||||
chatId = chatId,
|
||||
starCount = starCount,
|
||||
@@ -152,7 +153,7 @@ fun SendPaidMedia(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PaidMediaInfoContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<PaidMediaInfoContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -197,11 +198,11 @@ data class SendPaidMediaData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<PaidMediaInfoContent>>,
|
||||
SendContentMessageRequest<ContentMessage<PaidMediaInfoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<PaidMediaInfoContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<PaidMediaInfoContent>>,
|
||||
WithCustomizableCaptionRequest<ContentMessage<PaidMediaInfoContent>>
|
||||
) : DataRequest<ChatContentMessage<PaidMediaInfoContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<PaidMediaInfoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<PaidMediaInfoContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<PaidMediaInfoContent>>,
|
||||
WithCustomizableCaptionRequest<ChatContentMessage<PaidMediaInfoContent>>
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text ?: return@lazy null)
|
||||
@@ -218,7 +219,7 @@ data class SendPaidMediaData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendPaidMedia"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<PaidMediaInfoContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<PaidMediaInfoContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -14,6 +14,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.PhotoContent
|
||||
@@ -39,7 +40,7 @@ fun SendPhoto(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<PhotoContent>> {
|
||||
): Request<ChatContentMessage<PhotoContent>> {
|
||||
val data = SendPhotoData(
|
||||
chatId = chatId,
|
||||
photo = photo,
|
||||
@@ -85,7 +86,7 @@ fun SendPhoto(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<PhotoContent>> {
|
||||
): Request<ChatContentMessage<PhotoContent>> {
|
||||
val data = SendPhotoData(
|
||||
chatId = chatId,
|
||||
photo = photo,
|
||||
@@ -116,7 +117,7 @@ fun SendPhoto(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PhotoContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<PhotoContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -160,11 +161,11 @@ data class SendPhotoData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<PhotoContent>>,
|
||||
SendContentMessageRequest<ContentMessage<PhotoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<PhotoContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<PhotoContent>>,
|
||||
WithCustomizableCaptionRequest<ContentMessage<PhotoContent>>,
|
||||
) : DataRequest<ChatContentMessage<PhotoContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<PhotoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<PhotoContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<PhotoContent>>,
|
||||
WithCustomizableCaptionRequest<ChatContentMessage<PhotoContent>>,
|
||||
OptionallyWithSpoilerRequest
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
@@ -180,7 +181,7 @@ data class SendPhotoData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendPhoto"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<PhotoContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<PhotoContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -9,6 +9,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.StickerContent
|
||||
@@ -29,7 +30,7 @@ fun SendSticker(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<StickerContent>> = SendStickerByFileId(
|
||||
): Request<ChatContentMessage<StickerContent>> = SendStickerByFileId(
|
||||
chatId = chatId,
|
||||
sticker = sticker,
|
||||
threadId = threadId,
|
||||
@@ -53,7 +54,7 @@ fun SendSticker(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<StickerContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<StickerContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -89,9 +90,9 @@ data class SendStickerByFileId internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<StickerContent>>, ReplyingMarkupSendMessageRequest<ContentMessage<StickerContent>> {
|
||||
) : SendContentMessageRequest<ChatContentMessage<StickerContent>>, ReplyingMarkupSendMessageRequest<ChatContentMessage<StickerContent>> {
|
||||
override fun method(): String = "sendSticker"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<StickerContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<StickerContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -16,6 +16,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.media.OptionallyStreamable
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.VideoContent
|
||||
@@ -49,7 +50,7 @@ fun SendVideo(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<VideoContent>> {
|
||||
): Request<ChatContentMessage<VideoContent>> {
|
||||
val videoAsFile = video as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
val coverAsFile = cover as? MultipartFile
|
||||
@@ -114,7 +115,7 @@ fun SendVideo(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<VideoContent>> {
|
||||
): Request<ChatContentMessage<VideoContent>> {
|
||||
val videoAsFile = video as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
val coverAsFile = cover as? MultipartFile
|
||||
@@ -156,7 +157,7 @@ fun SendVideo(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VideoContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<VideoContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -214,15 +215,15 @@ data class SendVideoData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<VideoContent>>,
|
||||
SendContentMessageRequest<ContentMessage<VideoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
ThumbedSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
DuratedSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
SizedSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
WithCustomizableCaptionRequest<ContentMessage<VideoContent>>,
|
||||
CoveredSendMessageRequest<ContentMessage<VideoContent>>,
|
||||
) : DataRequest<ChatContentMessage<VideoContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
ThumbedSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
DuratedSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
SizedSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
WithCustomizableCaptionRequest<ChatContentMessage<VideoContent>>,
|
||||
CoveredSendMessageRequest<ChatContentMessage<VideoContent>>,
|
||||
WithCustomStartMediaData,
|
||||
OptionallyWithSpoilerRequest,
|
||||
OptionallyStreamable
|
||||
@@ -240,7 +241,7 @@ data class SendVideoData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendVideo"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<VideoContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<VideoContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -8,6 +8,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.VideoNoteContent
|
||||
@@ -31,7 +32,7 @@ fun SendVideoNote(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<VideoNoteContent>> {
|
||||
): Request<ChatContentMessage<VideoNoteContent>> {
|
||||
val videoNoteAsFile = videoNote as? MultipartFile
|
||||
val thumbAsFile = thumbnail as? MultipartFile
|
||||
|
||||
@@ -63,7 +64,7 @@ fun SendVideoNote(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VideoNoteContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<VideoNoteContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -103,18 +104,18 @@ data class SendVideoNoteData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<VideoNoteContent>>,
|
||||
SendContentMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||
ThumbedSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||
DuratedSendMessageRequest<ContentMessage<VideoNoteContent>>,
|
||||
SizedSendMessageRequest<ContentMessage<VideoNoteContent>>
|
||||
) : DataRequest<ChatContentMessage<VideoNoteContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<VideoNoteContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<VideoNoteContent>>,
|
||||
ThumbedSendMessageRequest<ChatContentMessage<VideoNoteContent>>,
|
||||
DuratedSendMessageRequest<ChatContentMessage<VideoNoteContent>>,
|
||||
SizedSendMessageRequest<ChatContentMessage<VideoNoteContent>>
|
||||
{
|
||||
override val height: Int?
|
||||
get() = width
|
||||
|
||||
override fun method(): String = "sendVideoNote"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<VideoNoteContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<VideoNoteContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -12,6 +12,7 @@ import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.VoiceContent
|
||||
@@ -37,7 +38,7 @@ fun SendVoice(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<VoiceContent>> {
|
||||
): Request<ChatContentMessage<VoiceContent>> {
|
||||
val voiceAsFile = voice as? MultipartFile
|
||||
|
||||
val data = SendVoiceData(
|
||||
@@ -84,7 +85,7 @@ fun SendVoice(
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<ContentMessage<VoiceContent>> {
|
||||
): Request<ChatContentMessage<VoiceContent>> {
|
||||
val voiceAsFile = voice as? MultipartFile
|
||||
|
||||
val data = SendVoiceData(
|
||||
@@ -116,7 +117,7 @@ fun SendVoice(
|
||||
}
|
||||
}
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<VoiceContent>>
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<VoiceContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@@ -158,11 +159,11 @@ data class SendVoiceData internal constructor(
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : DataRequest<ContentMessage<VoiceContent>>,
|
||||
SendContentMessageRequest<ContentMessage<VoiceContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<VoiceContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<VoiceContent>>,
|
||||
DuratedSendMessageRequest<ContentMessage<VoiceContent>>
|
||||
) : DataRequest<ChatContentMessage<VoiceContent>>,
|
||||
SendContentMessageRequest<ChatContentMessage<VoiceContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<VoiceContent>>,
|
||||
TextableSendMessageRequest<ChatContentMessage<VoiceContent>>,
|
||||
DuratedSendMessageRequest<ChatContentMessage<VoiceContent>>
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text ?: return@lazy null)
|
||||
@@ -177,7 +178,7 @@ data class SendVoiceData internal constructor(
|
||||
}
|
||||
|
||||
override fun method(): String = "sendVoice"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<VoiceContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<VoiceContent>>
|
||||
get() = commonResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -7,6 +7,7 @@ import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.InvoiceContent
|
||||
@@ -17,7 +18,7 @@ import dev.inmo.tgbotapi.types.payments.abstracts.XTR
|
||||
import dev.inmo.tgbotapi.types.threadId
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val invoiceMessageSerializer: DeserializationStrategy<ContentMessage<InvoiceContent>>
|
||||
private val invoiceMessageSerializer: DeserializationStrategy<ChatContentMessage<InvoiceContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
/**
|
||||
@@ -90,10 +91,10 @@ data class SendInvoice(
|
||||
DisableNotification,
|
||||
WithReplyParameters,
|
||||
WithReplyMarkup,
|
||||
SendMessageRequest<ContentMessage<InvoiceContent>>,
|
||||
OptionallyWithEffectRequest<ContentMessage<InvoiceContent>> {
|
||||
SendMessageRequest<ChatContentMessage<InvoiceContent>>,
|
||||
OptionallyWithEffectRequest<ChatContentMessage<InvoiceContent>> {
|
||||
override fun method(): String = "sendInvoice"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<InvoiceContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<InvoiceContent>>
|
||||
get() = invoiceMessageSerializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
@@ -11,6 +11,7 @@ import dev.inmo.tgbotapi.types.media.InputPollMedia
|
||||
import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.PollContent
|
||||
@@ -21,7 +22,7 @@ import korlibs.time.millisecondsLong
|
||||
import korlibs.time.seconds
|
||||
import kotlinx.serialization.*
|
||||
|
||||
private val commonResultDeserializer: DeserializationStrategy<ContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
private val commonResultDeserializer: DeserializationStrategy<ChatContentMessage<PollContent>> = TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
internal inline val ApproximateScheduledCloseInfo.openPeriod
|
||||
get() = openDuration.millisecondsLong.div(1000)
|
||||
@@ -289,8 +290,8 @@ internal fun ScheduledCloseInfo.checkSendData() {
|
||||
}
|
||||
}
|
||||
|
||||
sealed class SendPoll : SendContentMessageRequest<ContentMessage<PollContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<PollContent>>, TextedInput {
|
||||
sealed class SendPoll : SendContentMessageRequest<ChatContentMessage<PollContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ChatContentMessage<PollContent>>, TextedInput {
|
||||
abstract val question: String
|
||||
override val text: String
|
||||
get() = question
|
||||
@@ -322,7 +323,7 @@ sealed class SendPoll : SendContentMessageRequest<ContentMessage<PollContent>>,
|
||||
}
|
||||
|
||||
override fun method(): String = "sendPoll"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<PollContent>>
|
||||
override val resultDeserializer: DeserializationStrategy<ChatContentMessage<PollContent>>
|
||||
get() = commonResultDeserializer
|
||||
}
|
||||
|
||||
|
||||
@@ -224,7 +224,9 @@ const val canTransferAndUpgradeGiftsField = "can_transfer_and_upgrade_gifts"
|
||||
const val canTransferStarsField = "can_transfer_stars"
|
||||
const val canManageStoriesField = "can_manage_stories"
|
||||
const val supportInlineQueriesField = "supports_inline_queries"
|
||||
const val supportsGuestQueriesField = "supports_guest_queries"
|
||||
const val canConnectToBusinessField = "can_connect_to_business"
|
||||
const val guestQueryIdField = "guest_query_id"
|
||||
const val textEntitiesField = "text_entities"
|
||||
const val textParseModeField = "text_parse_mode"
|
||||
const val entitiesField = "entities"
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.inmo.tgbotapi.types
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlin.jvm.JvmInline
|
||||
|
||||
@Serializable
|
||||
@JvmInline
|
||||
value class GuestQueryId(
|
||||
val string: String
|
||||
) {
|
||||
override fun toString(): String {
|
||||
return string
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@ const val UPDATE_BUSINESS_MESSAGE = "business_message"
|
||||
const val UPDATE_EDITED_BUSINESS_MESSAGE = "edited_business_message"
|
||||
const val UPDATE_DELETED_BUSINESS_MESSAGES = "deleted_business_messages"
|
||||
|
||||
const val UPDATE_GUEST_MESSAGE = "guest_message"
|
||||
|
||||
const val UPDATE_MANAGED_BOT = "managed_bot"
|
||||
|
||||
val ALL_UPDATES_LIST_WITHOUT_REACTIONS = listOf(
|
||||
@@ -39,6 +41,8 @@ val ALL_UPDATES_LIST_WITHOUT_REACTIONS = listOf(
|
||||
UPDATE_EDITED_BUSINESS_MESSAGE,
|
||||
UPDATE_DELETED_BUSINESS_MESSAGES,
|
||||
|
||||
UPDATE_GUEST_MESSAGE,
|
||||
|
||||
UPDATE_INLINE_QUERY,
|
||||
UPDATE_CHOSEN_INLINE_RESULT,
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ sealed interface KeyboardButton {
|
||||
* [dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onText] in
|
||||
* case you are using Behaviour Builder OR with [dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter.messagesFlow]
|
||||
* and [kotlinx.coroutines.flow.filterIsInstance] and filtering by type
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.CommonMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyTextContentMessages]
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyTextContentMessages]
|
||||
*/
|
||||
@Serializable
|
||||
data class SimpleKeyboardButton(
|
||||
@@ -57,7 +57,7 @@ data class UnknownKeyboardButton internal constructor(
|
||||
* to catch this contact in updates and data using [dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContact] in
|
||||
* case you are using Behaviour Builder OR with [dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter.messagesFlow]
|
||||
* and [kotlinx.coroutines.flow.filterIsInstance] and filtering by type
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.CommonMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyContactContentMessages]
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyContactContentMessages]
|
||||
*/
|
||||
@Serializable
|
||||
data class RequestContactKeyboardButton(
|
||||
@@ -77,7 +77,7 @@ data class RequestContactKeyboardButton(
|
||||
* to catch this location in updates and data using [dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onLocation] in
|
||||
* case you are using Behaviour Builder OR with [dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter.messagesFlow]
|
||||
* and [kotlinx.coroutines.flow.filterIsInstance] and filtering by type
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.CommonMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyLocationContentMessages]
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyLocationContentMessages]
|
||||
*/
|
||||
@Serializable
|
||||
data class RequestLocationKeyboardButton(
|
||||
@@ -114,7 +114,7 @@ data class WebAppKeyboardButton(
|
||||
* to catch this poll in updates and data using [dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPoll] in
|
||||
* case you are using Behaviour Builder OR with [dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter.messagesFlow]
|
||||
* and [kotlinx.coroutines.flow.filterIsInstance] and filtering by type
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.CommonMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyPollContentMessages]
|
||||
* [dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage] and [dev.inmo.tgbotapi.extensions.utils.onlyPollContentMessages]
|
||||
*/
|
||||
@Serializable
|
||||
data class RequestPollKeyboardButton(
|
||||
|
||||
@@ -493,6 +493,8 @@ data class ExtendedBot(
|
||||
val canReadAllGroupMessages: Boolean = false,
|
||||
@SerialName(supportInlineQueriesField)
|
||||
val supportsInlineQueries: Boolean = false,
|
||||
@SerialName(supportsGuestQueriesField)
|
||||
val supportsGuestQueries: Boolean = false,
|
||||
@SerialName(canConnectToBusinessField)
|
||||
val canConnectToBusiness: Boolean = false,
|
||||
@SerialName(photoField)
|
||||
|
||||
@@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.checklists
|
||||
|
||||
import dev.inmo.tgbotapi.types.checklistMessageField
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass
|
||||
import dev.inmo.tgbotapi.types.message.content.ChecklistContent
|
||||
import dev.inmo.tgbotapi.types.tasksField
|
||||
@@ -14,7 +14,7 @@ data class ChecklistTasksAdded(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(checklistMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializerClass::class)
|
||||
val checklistMessage: CommonMessage<ChecklistContent>,
|
||||
val checklistMessage: ChatContentMessage<ChecklistContent>,
|
||||
@SerialName(tasksField)
|
||||
val tasks: List<ChecklistTask.Created>,
|
||||
) : CommonEvent
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.types.checklistMessageField
|
||||
import dev.inmo.tgbotapi.types.markedAsDoneTaskIdsField
|
||||
import dev.inmo.tgbotapi.types.markedAsNotDoneTaskIdsField
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializerClass
|
||||
import dev.inmo.tgbotapi.types.message.content.ChecklistContent
|
||||
import kotlinx.serialization.SerialName
|
||||
@@ -15,7 +15,7 @@ data class ChecklistTasksDone(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(checklistMessageField)
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializerClass::class)
|
||||
val checklistMessage: CommonMessage<ChecklistContent>,
|
||||
val checklistMessage: ChatContentMessage<ChecklistContent>,
|
||||
@SerialName(markedAsDoneTaskIdsField)
|
||||
val markedAsDone: List<ChecklistTaskId>? = null,
|
||||
@SerialName(markedAsNotDoneTaskIdsField)
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.inmo.tgbotapi.types.guest
|
||||
|
||||
import dev.inmo.tgbotapi.types.InlineMessageId
|
||||
import dev.inmo.tgbotapi.types.inlineMessageIdField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class SentGuestMessage(
|
||||
@SerialName(inlineMessageIdField)
|
||||
val inlineMessageId: InlineMessageId
|
||||
)
|
||||
@@ -0,0 +1,32 @@
|
||||
package dev.inmo.tgbotapi.types.message
|
||||
|
||||
import korlibs.time.DateTime
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.chat.CommonBot
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.GuestContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
import kotlinx.serialization.SerialName
|
||||
|
||||
data class GuestContentMessageImpl<T: MessageContent>(
|
||||
override val messageId: MessageId,
|
||||
override val from: User,
|
||||
override val chat: PreviewChat,
|
||||
override val guestQueryId: GuestQueryId,
|
||||
override val content: T,
|
||||
override val date: DateTime,
|
||||
override val editDate: DateTime?,
|
||||
override val hasProtectedContent: Boolean,
|
||||
override val forwardOrigin: MessageOrigin?,
|
||||
override val replyInfo: ReplyInfo?,
|
||||
override val replyMarkup: InlineKeyboardMarkup?,
|
||||
override val senderBot: CommonBot?,
|
||||
override val mediaGroupId: MediaGroupId?,
|
||||
override val guestBotCallerUser: User,
|
||||
override val guestBotCallerChat: PreviewChat,
|
||||
override val fromOffline: Boolean,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val cost: Int? = null,
|
||||
) : GuestContentMessage<T>
|
||||
@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.types.chat.User
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.FromUserMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatMessage
|
||||
import dev.inmo.tgbotapi.types.passport.PassportData
|
||||
|
||||
data class PassportMessage(
|
||||
@@ -14,4 +15,4 @@ data class PassportMessage(
|
||||
override val from: User,
|
||||
override val date: DateTime,
|
||||
val passportData: PassportData
|
||||
) : AccessibleMessage, FromUserMessage
|
||||
) : ChatMessage, FromUserMessage
|
||||
|
||||
@@ -184,6 +184,13 @@ internal data class RawMessage(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
private val sender_business_bot: PreviewBot? = null,
|
||||
|
||||
// Guest mode
|
||||
private val guest_query_id: GuestQueryId? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
private val guest_bot_caller_user: PreviewUser? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
private val guest_bot_caller_chat: PreviewChat? = null,
|
||||
|
||||
// Giveaways
|
||||
private val giveaway_created: GiveawayCreated? = null,
|
||||
private val giveaway: Giveaway? = null,
|
||||
@@ -450,7 +457,27 @@ internal data class RawMessage(
|
||||
external_reply != null -> external_reply
|
||||
else -> null
|
||||
}
|
||||
when (chat) {
|
||||
if (guest_query_id != null) {
|
||||
GuestContentMessageImpl(
|
||||
messageId = messageId,
|
||||
from = checkedFrom ?: from ?: error("Was detected guest message, but owner (sender) of the message was not found"),
|
||||
chat = chat,
|
||||
guestQueryId = guest_query_id,
|
||||
content = content,
|
||||
date = date.asDate,
|
||||
editDate = edit_date?.asDate,
|
||||
hasProtectedContent = has_protected_content == true,
|
||||
forwardOrigin = forward_origin,
|
||||
replyInfo = replyInfo,
|
||||
replyMarkup = reply_markup,
|
||||
senderBot = via_bot,
|
||||
mediaGroupId = media_group_id,
|
||||
guestBotCallerUser = guest_bot_caller_user ?: error("For guest content message it is required to have user which called the bot"),
|
||||
guestBotCallerChat = guest_bot_caller_chat ?: error("For guest content message it is required to have chat in that called the bot"),
|
||||
fromOffline = is_from_offline,
|
||||
cost = paid_star_count,
|
||||
)
|
||||
} else when (chat) {
|
||||
is PreviewChannelDirectMessagesChat -> {
|
||||
if (direct_messages_topic == null) error("direct_messages_topic must be presented for ChannelDirectMessagesChat messages")
|
||||
val chatId = ChatIdWithChannelDirectMessageThreadId(
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
sealed interface ChatContentMessage<out T: MessageContent> : CommonContentMessage<T>, ChatMessage
|
||||
@@ -2,6 +2,6 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent
|
||||
|
||||
interface ChatEventMessage<T : ChatEvent> : AccessibleMessage {
|
||||
interface ChatEventMessage<T : ChatEvent> : ChatMessage {
|
||||
val chatEvent: T
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
sealed interface CommonMessage<out T: MessageContent> : AccessibleMessage,
|
||||
sealed interface CommonContentMessage<out T: MessageContent> : AccessibleMessage,
|
||||
PossiblyForwardedMessage,
|
||||
PossiblyEditedMessage,
|
||||
PossiblyReplyMessage,
|
||||
@@ -11,4 +11,4 @@ sealed interface CommonMessage<out T: MessageContent> : AccessibleMessage,
|
||||
PossiblyOfflineMessage,
|
||||
PossiblyMediaGroupMessage<T>,
|
||||
PossiblyPaidMessage,
|
||||
ContentMessage<T>
|
||||
ContentMessage<T>
|
||||
@@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
interface ContentMessage<out T: MessageContent>: AccessibleMessage {
|
||||
interface ContentMessage<out T: MessageContent> : AccessibleMessage {
|
||||
val hasProtectedContent: Boolean
|
||||
val content: T
|
||||
|
||||
|
||||
@@ -3,6 +3,6 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
import dev.inmo.tgbotapi.abstracts.FromUser
|
||||
import dev.inmo.tgbotapi.abstracts.OptionallyFromUser
|
||||
|
||||
interface OptionallyFromUserMessage : OptionallyFromUser, AccessibleMessage
|
||||
interface OptionallyFromUserMessage : OptionallyFromUser, Message
|
||||
|
||||
interface FromUserMessage : OptionallyFromUserMessage, FromUser
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.GuestQueryId
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
interface GuestContentMessage<T: MessageContent> : SpecialMessage,
|
||||
CommonContentMessage<T>,
|
||||
GuestMessage,
|
||||
FromUserMessage,
|
||||
PossiblySentViaBot {
|
||||
override val guestQueryId: GuestQueryId
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithOptionalGuestQueryId
|
||||
import dev.inmo.tgbotapi.types.GuestQueryId
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
|
||||
interface GuestMessage : WithOptionalGuestQueryId {
|
||||
override val guestQueryId: GuestQueryId
|
||||
val guestBotCallerUser: User
|
||||
val guestBotCallerChat: PreviewChat
|
||||
}
|
||||
@@ -47,6 +47,9 @@ interface Message : WithPreviewChatAndMessageId, PossiblyBusinessMessage {
|
||||
|
||||
interface AccessibleMessage : Message
|
||||
|
||||
interface ChatMessage : AccessibleMessage
|
||||
interface SpecialMessage : AccessibleMessage
|
||||
|
||||
@Serializable
|
||||
data class InaccessibleMessage(
|
||||
override val chat: PreviewChat,
|
||||
@@ -61,7 +64,7 @@ data class UnknownMessageType(
|
||||
override val chat: PreviewChat,
|
||||
override val date: DateTime,
|
||||
val insideException: Exception
|
||||
) : AccessibleMessage
|
||||
) : ChatMessage
|
||||
|
||||
internal class TelegramBotAPIMessageDeserializationStrategyClass<T> : DeserializationStrategy<T> {
|
||||
@OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class)
|
||||
|
||||
@@ -2,6 +2,6 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import korlibs.time.DateTime
|
||||
|
||||
interface PossiblyEditedMessage : AccessibleMessage {
|
||||
interface PossiblyEditedMessage : Message {
|
||||
val editDate: DateTime?
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.types.message.ForwardInfo
|
||||
import dev.inmo.tgbotapi.types.message.MessageOrigin
|
||||
import dev.inmo.tgbotapi.types.message.forwardInfo
|
||||
|
||||
interface PossiblyForwardedMessage : AccessibleMessage {
|
||||
interface PossiblyForwardedMessage : Message {
|
||||
val forwardOrigin: MessageOrigin?
|
||||
val forwardInfo: ForwardInfo?
|
||||
get() = forwardOrigin ?.forwardInfo()
|
||||
|
||||
@@ -2,6 +2,6 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.payments.abstracts.PaymentInfo
|
||||
|
||||
interface PossiblyPaymentMessage : AccessibleMessage {
|
||||
interface PossiblyPaymentMessage : ChatMessage {
|
||||
val paymentInfo: PaymentInfo?
|
||||
}
|
||||
|
||||
@@ -2,4 +2,4 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.content.MessageContent
|
||||
|
||||
sealed interface PossiblySentViaBotCommonMessage<out T: MessageContent> : CommonMessage<T>, PossiblySentViaBot
|
||||
sealed interface PossiblySentViaBotCommonMessage<out T: MessageContent> : ChatContentMessage<T>, PossiblySentViaBot
|
||||
|
||||
@@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.requests.chat.forum.CreateForumTopic
|
||||
import dev.inmo.tgbotapi.types.MessageThreadId
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.forum.ForumTopicCreated
|
||||
|
||||
interface PossiblyTopicMessage : AccessibleMessage {
|
||||
interface PossiblyTopicMessage : ChatMessage {
|
||||
val threadId: MessageThreadId?
|
||||
val threadCreatingInfo: ForumTopicCreated?
|
||||
}
|
||||
|
||||
@@ -2,6 +2,6 @@ package dev.inmo.tgbotapi.types.message.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.AuthorSignature
|
||||
|
||||
interface SignedMessage : AccessibleMessage {
|
||||
interface SignedMessage : ChatMessage {
|
||||
val authorSignature: AuthorSignature?
|
||||
}
|
||||
@@ -165,7 +165,7 @@ sealed interface ResendableContent {
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<out AccessibleMessage>
|
||||
): Request<out ChatMessage>
|
||||
|
||||
fun createResend(
|
||||
chatId: ChatIdentifier,
|
||||
@@ -180,7 +180,7 @@ sealed interface ResendableContent {
|
||||
replyToMessageId: MessageId?,
|
||||
allowSendingWithoutReply: Boolean? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
): Request<out AccessibleMessage> = createResend(
|
||||
): Request<out ChatMessage> = createResend(
|
||||
chatId = chatId,
|
||||
messageThreadId = messageThreadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.types.abstracts.WithOptionalQuoteInfo
|
||||
import dev.inmo.tgbotapi.types.files.AudioFile
|
||||
import dev.inmo.tgbotapi.types.files.DocumentFile
|
||||
import dev.inmo.tgbotapi.types.media.*
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -28,7 +29,7 @@ sealed interface MediaGroupCollectionContent<T : MediaGroupPartContent> : Texted
|
||||
data class PartWrapper<T : MediaGroupPartContent>(
|
||||
val messageId: MessageId,
|
||||
val content: T,
|
||||
val sourceMessage: PossiblySentViaBotCommonMessage<T>
|
||||
val sourceMessage: CommonContentMessage<T>
|
||||
)
|
||||
val group: List<PartWrapper<T>>
|
||||
val mediaGroupId: MediaGroupId
|
||||
|
||||
@@ -10,6 +10,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.AnimationFile
|
||||
import dev.inmo.tgbotapi.types.files.DocumentFile
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -35,7 +36,7 @@ data class AnimationContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<AnimationContent>> = SendAnimation(
|
||||
): Request<ChatContentMessage<AnimationContent>> = SendAnimation(
|
||||
chatId = chatId,
|
||||
animation = media.fileId,
|
||||
thumbnail = media.thumbnail ?.fileId,
|
||||
|
||||
@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.AudioFile
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -32,7 +32,7 @@ data class AudioContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<AudioContent>> = SendAudio(
|
||||
): Request<ChatContentMessage<AudioContent>> = SendAudio(
|
||||
chatId = chatId,
|
||||
audio = media.fileId,
|
||||
thumbnail = media.thumbnail ?.fileId,
|
||||
|
||||
@@ -12,7 +12,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.checklists.Checklist
|
||||
import dev.inmo.tgbotapi.types.checklists.ChecklistTask
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -31,7 +31,7 @@ data class ChecklistContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<ChecklistContent>> {
|
||||
): Request<ChatContentMessage<ChecklistContent>> {
|
||||
return SendChecklist(
|
||||
chatId = chatId,
|
||||
checklist = Checklist.Input(
|
||||
|
||||
@@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -25,7 +25,7 @@ data class ContactContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<ContactContent>> = SendContact(
|
||||
): Request<ChatContentMessage<ContactContent>> = SendContact(
|
||||
chatId = chatId,
|
||||
contact = contact,
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.dice.Dice
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -26,7 +26,7 @@ data class DiceContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<DiceContent>> = SendDice(
|
||||
): Request<ChatContentMessage<DiceContent>> = SendDice(
|
||||
chatId = chatId,
|
||||
animationType = dice.animationType,
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -13,7 +13,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.DocumentFile
|
||||
import dev.inmo.tgbotapi.types.files.asDocumentFile
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -35,7 +35,7 @@ data class DocumentContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<DocumentContent>> = SendDocument(
|
||||
): Request<ChatContentMessage<DocumentContent>> = SendDocument(
|
||||
chatId = chatId,
|
||||
document = media.fileId,
|
||||
thumbnail = media.thumbnail ?.fileId,
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.games.Game
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -26,7 +26,7 @@ data class GameContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<GameContent>> = SendGame(
|
||||
): Request<ChatContentMessage<GameContent>> = SendGame(
|
||||
chatId = chatId,
|
||||
gameShortName = game.title,
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.chat.Chat
|
||||
import dev.inmo.tgbotapi.types.giveaway.Giveaway
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -29,7 +29,8 @@ data class GiveawayContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<out AccessibleMessage> {
|
||||
): Request<ChatContentMessage<GiveawayContent>> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return ForwardMessage(
|
||||
chat.id,
|
||||
toChatId = chatId,
|
||||
@@ -38,6 +39,6 @@ data class GiveawayContent(
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent
|
||||
)
|
||||
) as Request<ChatContentMessage<GiveawayContent>>
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.giveaway.GiveawayPublicResults
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -26,7 +26,8 @@ data class GiveawayPublicResultsContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<out AccessibleMessage> {
|
||||
): Request<ChatContentMessage<GiveawayPublicResultsContent>> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return ForwardMessage(
|
||||
giveaway.chat.id,
|
||||
toChatId = chatId,
|
||||
@@ -35,6 +36,6 @@ data class GiveawayPublicResultsContent(
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent
|
||||
)
|
||||
) as Request<ChatContentMessage<GiveawayPublicResultsContent>>
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.payments.Invoice
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -25,7 +25,7 @@ data class InvoiceContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<InvoiceContent>> {
|
||||
): Request<ChatContentMessage<InvoiceContent>> {
|
||||
error("Unfortunately, currently InvoiceOfPayment can not be resend due to requirement of additional parameters," +
|
||||
" which can't be provided during the call of this method")
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.LivePhotoFile
|
||||
import dev.inmo.tgbotapi.types.files.toTelegramMediaLivePhoto
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -34,7 +34,7 @@ data class LivePhotoContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<LivePhotoContent>> = SendLivePhoto(
|
||||
): Request<ChatContentMessage<LivePhotoContent>> = SendLivePhoto(
|
||||
chatId = chatId,
|
||||
livePhoto = media.fileId,
|
||||
photo = media.photo ?.fileId ?: media.fileId,
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.location.*
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
|
||||
@@ -107,7 +107,7 @@ data class LiveLocationContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<LiveLocationContent>> = SendLiveLocation(
|
||||
): Request<ChatContentMessage<LiveLocationContent>> = SendLiveLocation(
|
||||
chatId = chatId,
|
||||
latitude = location.latitude,
|
||||
longitude = location.longitude,
|
||||
@@ -148,7 +148,7 @@ data class StaticLocationContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<StaticLocationContent>> = SendStaticLocation(
|
||||
): Request<ChatContentMessage<StaticLocationContent>> = SendStaticLocation(
|
||||
chatId = chatId,
|
||||
latitude = location.latitude,
|
||||
longitude = location.longitude,
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.TelegramMediaFile
|
||||
import dev.inmo.tgbotapi.types.media.TelegramFreeMedia
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSource
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -44,7 +44,7 @@ data class MediaGroupContent<T : MediaGroupPartContent>(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<MediaGroupContent<MediaGroupPartContent>>> = SendMediaGroup<MediaGroupPartContent>(
|
||||
): Request<ChatContentMessage<MediaGroupContent<MediaGroupPartContent>>> = SendMediaGroup<MediaGroupPartContent>(
|
||||
chatId = chatId,
|
||||
media = group.map { it.content.toMediaGroupMemberTelegramMedia() },
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -12,7 +12,7 @@ import dev.inmo.tgbotapi.types.files.*
|
||||
import dev.inmo.tgbotapi.types.files.toTelegramPaidMediaVideo
|
||||
import dev.inmo.tgbotapi.types.media.*
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.payments.PaidMedia
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -36,7 +36,7 @@ data class PaidMediaInfoContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<PaidMediaInfoContent>> = SendPaidMedia(
|
||||
): Request<ChatContentMessage<PaidMediaInfoContent>> = SendPaidMedia(
|
||||
chatId = chatId,
|
||||
starCount = paidMediaInfo.stars,
|
||||
media = paidMediaInfo.media.mapNotNull {
|
||||
|
||||
@@ -11,7 +11,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.*
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -37,7 +37,7 @@ data class PhotoContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<PhotoContent>> = SendPhoto(
|
||||
): Request<ChatContentMessage<PhotoContent>> = SendPhoto(
|
||||
chatId = chatId,
|
||||
photo = media.fileId,
|
||||
entities = textSources,
|
||||
|
||||
@@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.polls.Poll
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -26,7 +26,7 @@ data class PollContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<PollContent>> = poll.createRequest(
|
||||
): Request<ChatContentMessage<PollContent>> = poll.createRequest(
|
||||
chatId = chatId,
|
||||
threadId = messageThreadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.Sticker
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -27,7 +27,7 @@ data class StickerContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<StickerContent>> = SendSticker(
|
||||
): Request<ChatContentMessage<StickerContent>> = SendSticker(
|
||||
chatId = chatId,
|
||||
sticker = media.fileId,
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.chat.Chat
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.PossiblyForwardedMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.stories.Story
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -29,7 +29,8 @@ data class StoryContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<PossiblyForwardedMessage> {
|
||||
): Request<ChatContentMessage<StoryContent>> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return ForwardMessage(
|
||||
chat.id,
|
||||
toChatId = chatId,
|
||||
@@ -38,6 +39,6 @@ data class StoryContent(
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent
|
||||
)
|
||||
) as Request<ChatContentMessage<StoryContent>>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.abstracts.WithOptionalQuoteInfo
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -30,7 +30,7 @@ data class TextContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<TextContent>> = SendTextMessage(
|
||||
): Request<ChatContentMessage<TextContent>> = SendTextMessage(
|
||||
chatId = chatId,
|
||||
entities = textSources,
|
||||
linkPreviewOptions = linkPreviewOptions,
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
package dev.inmo.tgbotapi.types.message.content
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
|
||||
typealias TextedMessage = CommonMessage<TextedContent>
|
||||
typealias TextedMessage = ChatContentMessage<TextedContent>
|
||||
|
||||
typealias InvoiceMessage = CommonMessage<InvoiceContent>
|
||||
typealias VenueMessage = CommonMessage<VenueContent>
|
||||
typealias GameMessage = CommonMessage<GameContent>
|
||||
typealias DiceMessage = CommonMessage<DiceContent>
|
||||
typealias ContactMessage = CommonMessage<ContactContent>
|
||||
typealias PollMessage = CommonMessage<PollContent>
|
||||
typealias TextMessage = CommonMessage<TextContent>
|
||||
typealias StoryMessage = CommonMessage<StoryContent>
|
||||
typealias InvoiceMessage = ChatContentMessage<InvoiceContent>
|
||||
typealias VenueMessage = ChatContentMessage<VenueContent>
|
||||
typealias GameMessage = ChatContentMessage<GameContent>
|
||||
typealias DiceMessage = ChatContentMessage<DiceContent>
|
||||
typealias ContactMessage = ChatContentMessage<ContactContent>
|
||||
typealias PollMessage = ChatContentMessage<PollContent>
|
||||
typealias TextMessage = ChatContentMessage<TextContent>
|
||||
typealias StoryMessage = ChatContentMessage<StoryContent>
|
||||
|
||||
typealias LocationMessage = CommonMessage<LocationContent>
|
||||
typealias LiveLocationMessage = CommonMessage<LiveLocationContent>
|
||||
typealias StaticLocationMessage = CommonMessage<StaticLocationContent>
|
||||
typealias LocationMessage = ChatContentMessage<LocationContent>
|
||||
typealias LiveLocationMessage = ChatContentMessage<LiveLocationContent>
|
||||
typealias StaticLocationMessage = ChatContentMessage<StaticLocationContent>
|
||||
|
||||
typealias MediaCollectionMessage<T> = CommonMessage<MediaCollectionContent<T>>
|
||||
typealias MediaMessage = CommonMessage<MediaContent>
|
||||
typealias VideoNoteMessage = CommonMessage<VideoNoteContent>
|
||||
typealias StickerMessage = CommonMessage<StickerContent>
|
||||
typealias TextedMediaMessage = CommonMessage<TextedMediaContent>
|
||||
typealias VoiceMessage = CommonMessage<VoiceContent>
|
||||
typealias MediaGroupMessage<T> = CommonMessage<MediaGroupContent<T>>
|
||||
typealias AudioMediaGroupMessage = CommonMessage<AudioMediaGroupPartContent>
|
||||
typealias AudioMessage = CommonMessage<AudioContent>
|
||||
typealias DocumentMediaGroupMessage = CommonMessage<DocumentMediaGroupPartContent>
|
||||
typealias DocumentMessage = CommonMessage<DocumentContent>
|
||||
typealias VisualMediaGroupMessage = CommonMessage<VisualMediaGroupPartContent>
|
||||
typealias VideoMessage = CommonMessage<VideoContent>
|
||||
typealias LivePhotoMessage = CommonMessage<LivePhotoContent>
|
||||
typealias PhotoMessage = CommonMessage<PhotoContent>
|
||||
typealias AnimationMessage = CommonMessage<AnimationContent>
|
||||
typealias ScheduledGiveawayContentMessage = CommonMessage<GiveawayContent>
|
||||
typealias GiveawayPublicResultsContentMessage = CommonMessage<GiveawayPublicResultsContent>
|
||||
typealias PaidMediaInfoContentMessage = CommonMessage<PaidMediaInfoContent>
|
||||
typealias ChecklistMessage = CommonMessage<ChecklistContent>
|
||||
typealias MediaCollectionMessage<T> = ChatContentMessage<MediaCollectionContent<T>>
|
||||
typealias MediaMessage = ChatContentMessage<MediaContent>
|
||||
typealias VideoNoteMessage = ChatContentMessage<VideoNoteContent>
|
||||
typealias StickerMessage = ChatContentMessage<StickerContent>
|
||||
typealias TextedMediaMessage = ChatContentMessage<TextedMediaContent>
|
||||
typealias VoiceMessage = ChatContentMessage<VoiceContent>
|
||||
typealias MediaGroupMessage<T> = ChatContentMessage<MediaGroupContent<T>>
|
||||
typealias AudioMediaGroupMessage = ChatContentMessage<AudioMediaGroupPartContent>
|
||||
typealias AudioMessage = ChatContentMessage<AudioContent>
|
||||
typealias DocumentMediaGroupMessage = ChatContentMessage<DocumentMediaGroupPartContent>
|
||||
typealias DocumentMessage = ChatContentMessage<DocumentContent>
|
||||
typealias VisualMediaGroupMessage = ChatContentMessage<VisualMediaGroupPartContent>
|
||||
typealias VideoMessage = ChatContentMessage<VideoContent>
|
||||
typealias LivePhotoMessage = ChatContentMessage<LivePhotoContent>
|
||||
typealias PhotoMessage = ChatContentMessage<PhotoContent>
|
||||
typealias AnimationMessage = ChatContentMessage<AnimationContent>
|
||||
typealias ScheduledGiveawayContentMessage = ChatContentMessage<GiveawayContent>
|
||||
typealias GiveawayPublicResultsContentMessage = ChatContentMessage<GiveawayPublicResultsContent>
|
||||
typealias PaidMediaInfoContentMessage = ChatContentMessage<PaidMediaInfoContent>
|
||||
typealias ChecklistMessage = ChatContentMessage<ChecklistContent>
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.venue.Venue
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -26,7 +26,7 @@ data class VenueContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<VenueContent>> = SendVenue(
|
||||
): Request<ChatContentMessage<VenueContent>> = SendVenue(
|
||||
chatId = chatId,
|
||||
venue = venue,
|
||||
threadId = messageThreadId,
|
||||
|
||||
@@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.VideoFile
|
||||
import dev.inmo.tgbotapi.types.files.toTelegramMediaVideo
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -34,7 +34,7 @@ data class VideoContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<VideoContent>> = SendVideo(
|
||||
): Request<ChatContentMessage<VideoContent>> = SendVideo(
|
||||
chatId = chatId,
|
||||
video = media.fileId,
|
||||
thumbnail = media.thumbnail ?.fileId,
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.VideoNoteFile
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -27,7 +27,7 @@ data class VideoNoteContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<VideoNoteContent>> = SendVideoNote(
|
||||
): Request<ChatContentMessage<VideoNoteContent>> = SendVideoNote(
|
||||
chatId = chatId,
|
||||
videoNote = media.fileId,
|
||||
thumbnail = media.thumbnail ?.fileId,
|
||||
|
||||
@@ -9,7 +9,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.files.VoiceFile
|
||||
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
@@ -31,7 +31,7 @@ data class VoiceContent(
|
||||
suggestedPostParameters: SuggestedPostParameters?,
|
||||
replyParameters: ReplyParameters?,
|
||||
replyMarkup: KeyboardMarkup?
|
||||
): Request<ContentMessage<VoiceContent>> = SendVoice(
|
||||
): Request<ChatContentMessage<VoiceContent>> = SendVoice(
|
||||
chatId = chatId,
|
||||
voice = media.fileId,
|
||||
entities = textSources,
|
||||
|
||||
@@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.update
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
|
||||
@@ -13,5 +14,5 @@ data class BusinessMessageUpdate(
|
||||
/**
|
||||
* @param newData Must be [BusinessContentMessage]
|
||||
*/
|
||||
override fun copy(newData: ContentMessage<*>) = copy(updateId, newData as BusinessContentMessage<*>)
|
||||
override fun copy(newData: AccessibleMessage) = copy(updateId, newData as BusinessContentMessage<*>)
|
||||
}
|
||||
|
||||
@@ -2,12 +2,11 @@ package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
|
||||
data class ChannelPostUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: AccessibleMessage
|
||||
) : BaseSentMessageUpdate {
|
||||
override fun copy(newData: ContentMessage<*>): BaseSentMessageUpdate = copy(updateId, newData)
|
||||
override fun copy(newData: AccessibleMessage): BaseSentMessageUpdate = copy(updateId, newData)
|
||||
}
|
||||
|
||||
@@ -2,9 +2,6 @@ package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessMessagesDeleted
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||
|
||||
data class DeletedBusinessMessageUpdate(
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
|
||||
data class EditBusinessMessageUpdate(
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
|
||||
data class EditChannelPostUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: CommonMessage<*>
|
||||
override val data: ChatContentMessage<*>
|
||||
) : BaseEditMessageUpdate
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate
|
||||
|
||||
data class EditMessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: CommonMessage<*>
|
||||
override val data: ChatContentMessage<*>
|
||||
) : BaseEditMessageUpdate
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.GuestContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
|
||||
data class GuestMessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: GuestContentMessage<*>
|
||||
) : BaseSentMessageUpdate {
|
||||
/**
|
||||
* @param newData Must be [GuestContentMessage]
|
||||
*/
|
||||
override fun copy(newData: AccessibleMessage) = copy(updateId, newData as GuestContentMessage<*>)
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.update
|
||||
|
||||
import dev.inmo.tgbotapi.types.UpdateId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
|
||||
@@ -9,5 +10,5 @@ data class MessageUpdate(
|
||||
override val updateId: UpdateId,
|
||||
override val data: AccessibleMessage
|
||||
) : BaseSentMessageUpdate {
|
||||
override fun copy(newData: ContentMessage<*>) = copy(updateId, newData)
|
||||
override fun copy(newData: AccessibleMessage) = copy(updateId, newData)
|
||||
}
|
||||
|
||||
@@ -31,13 +31,13 @@ internal data class RawUpdate constructor(
|
||||
val updateId: UpdateId,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val edited_message: CommonMessage<*>? = null,
|
||||
private val edited_message: ChatContentMessage<*>? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val message: AccessibleMessage? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val edited_channel_post: CommonMessage<*>? = null,
|
||||
private val edited_channel_post: ChatContentMessage<*>? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val channel_post: AccessibleMessage? = null,
|
||||
@@ -64,6 +64,9 @@ internal data class RawUpdate constructor(
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val edited_business_message: BusinessContentMessage<*>? = null,
|
||||
private val deleted_business_messages: BusinessMessagesDeleted? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(TelegramBotAPIMessageDeserializeOnlySerializer::class)
|
||||
private val guest_message: GuestContentMessage<*>? = null,
|
||||
private val purchased_paid_media: PaidMediaPurchased? = null,
|
||||
private val managed_bot: ManagedBotUpdated? = null,
|
||||
) {
|
||||
@@ -101,6 +104,7 @@ internal data class RawUpdate constructor(
|
||||
business_message != null -> BusinessMessageUpdate(updateId, business_message)
|
||||
edited_business_message != null -> EditBusinessMessageUpdate(updateId, edited_business_message)
|
||||
deleted_business_messages != null -> DeletedBusinessMessageUpdate(updateId, deleted_business_messages)
|
||||
guest_message != null -> GuestMessageUpdate(updateId, guest_message)
|
||||
purchased_paid_media != null -> PaidMediaPurchasedUpdate(updateId, purchased_paid_media)
|
||||
managed_bot != null -> ManagedBotUpdate(updateId, managed_bot)
|
||||
else -> UnknownUpdate(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.inmo.tgbotapi.types.update.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ChatContentMessage
|
||||
|
||||
interface BaseEditMessageUpdate : BaseMessageUpdate {
|
||||
override val data: CommonMessage<*>
|
||||
override val data: ChatContentMessage<*>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.inmo.tgbotapi.types.update.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||
|
||||
interface BaseMessageUpdate : Update {
|
||||
override val data: AccessibleMessage
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package dev.inmo.tgbotapi.types.update.abstracts
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
|
||||
interface BaseSentMessageUpdate : BaseMessageUpdate {
|
||||
/**
|
||||
@@ -9,5 +8,5 @@ interface BaseSentMessageUpdate : BaseMessageUpdate {
|
||||
*
|
||||
* **THERE IS NO ANY GUARANTEE THAT THIS METHOD WILL NOT THROW ANY EXCEPTION**
|
||||
*/
|
||||
fun copy(newData: ContentMessage<*>): BaseSentMessageUpdate
|
||||
fun copy(newData: AccessibleMessage): BaseSentMessageUpdate
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ interface FlowsUpdatesFilter : UpdatesFilter {
|
||||
val businessMessageUpdatesFlow: Flow<BusinessMessageUpdate>
|
||||
val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate>
|
||||
val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate>
|
||||
val guestMessageUpdatesFlow: Flow<GuestMessageUpdate>
|
||||
val paidMediaPurchasedUpdatesFlow: Flow<PaidMediaPurchasedUpdate>
|
||||
val managedBotUpdatesFlow: Flow<ManagedBotUpdate>
|
||||
val unknownUpdatesFlow: Flow<UnknownUpdate>
|
||||
@@ -73,6 +74,7 @@ abstract class AbstractFlowsUpdatesFilter : FlowsUpdatesFilter {
|
||||
override val businessMessageUpdatesFlow: Flow<BusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val guestMessageUpdatesFlow: Flow<GuestMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val paidMediaPurchasedUpdatesFlow: Flow<PaidMediaPurchasedUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
override val managedBotUpdatesFlow: Flow<ManagedBotUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.message.content.MediaGroupPartContent
|
||||
import dev.inmo.tgbotapi.utils.RiskFeature
|
||||
|
||||
@RiskFeature("This API is experimental and can be changed without any notice, use with caution")
|
||||
fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMediaGroupMessage(): PossiblySentViaBotCommonMessage<MediaGroupContent<T>> {
|
||||
fun <T : MediaGroupPartContent> List<CommonContentMessage<T>>.asMediaGroupMessage(): CommonContentMessage<MediaGroupContent<T>> {
|
||||
val sourceMessage = first()
|
||||
val content = MediaGroupContent(
|
||||
map { MediaGroupCollectionContent.PartWrapper(it.messageId, it.content, it) },
|
||||
@@ -267,5 +267,24 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia
|
||||
suggestedPostInfo = sourceMessage.suggestedPostInfo,
|
||||
cost = sourceMessage.cost,
|
||||
)
|
||||
is GuestContentMessage -> GuestContentMessageImpl(
|
||||
messageId = sourceMessage.messageId,
|
||||
from = sourceMessage.user,
|
||||
chat = sourceMessage.chat,
|
||||
guestQueryId = sourceMessage.guestQueryId,
|
||||
content = content,
|
||||
date = sourceMessage.date,
|
||||
editDate = sourceMessage.editDate,
|
||||
hasProtectedContent = sourceMessage.hasProtectedContent,
|
||||
forwardOrigin = sourceMessage.forwardOrigin,
|
||||
replyInfo = sourceMessage.replyInfo,
|
||||
replyMarkup = sourceMessage.replyMarkup,
|
||||
senderBot = sourceMessage.senderBot,
|
||||
mediaGroupId = sourceMessage.mediaGroupId,
|
||||
guestBotCallerUser = sourceMessage.guestBotCallerUser,
|
||||
guestBotCallerChat = sourceMessage.guestBotCallerChat,
|
||||
fromOffline = sourceMessage.fromOffline,
|
||||
cost = sourceMessage.cost,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user