1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-06-18 15:55:26 +00:00
tgbotapi/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt

113 lines
3.2 KiB
Kotlin
Raw Normal View History

2020-10-04 11:06:30 +00:00
package dev.inmo.tgbotapi.types.message
2022-05-01 16:13:40 +00:00
import dev.inmo.tgbotapi.abstracts.FromUser
2022-08-05 18:39:46 +00:00
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
2020-10-04 11:06:30 +00:00
import dev.inmo.tgbotapi.types.*
2022-04-21 18:16:41 +00:00
import dev.inmo.tgbotapi.types.chat.*
import dev.inmo.tgbotapi.types.chat.User
2022-08-05 10:31:39 +00:00
@ClassCastsIncluded
2022-08-04 16:13:02 +00:00
sealed interface ForwardInfo {
abstract val dateOfOriginal: TelegramDate
data class ByAnonymous(
override val dateOfOriginal: TelegramDate,
val senderName: String
) : ForwardInfo
data class ByUser(
override val dateOfOriginal: TelegramDate,
override val from: User
) : ForwardInfo, FromUser
sealed interface PublicChat : ForwardInfo {
val chat: dev.inmo.tgbotapi.types.chat.PublicChat
/**
* Represent forward info for the message sent by [channelChat] into some group
*/
data class SentByChannel(
override val dateOfOriginal: TelegramDate,
val channelChat: ChannelChat,
val signature: String? = null
) : PublicChat {
override val chat: dev.inmo.tgbotapi.types.chat.PublicChat
get() = channelChat
}
2020-10-02 08:59:10 +00:00
/**
* Represent forward info for the message sent by [channelChat] into that channel
*/
data class FromChannel(
override val dateOfOriginal: TelegramDate,
val messageId: MessageId,
val channelChat: ChannelChat,
val signature: String? = null
) : PublicChat {
override val chat: dev.inmo.tgbotapi.types.chat.PublicChat
get() = channelChat
}
2022-08-04 16:13:02 +00:00
data class FromSupergroup(
override val dateOfOriginal: TelegramDate,
val group: SupergroupChat
) : PublicChat {
override val chat: dev.inmo.tgbotapi.types.chat.PublicChat
get() = group
}
2022-08-04 16:13:02 +00:00
}
}
2024-01-07 11:12:37 +00:00
fun MessageOrigin.forwardInfo() = when(this) {
is MessageOrigin.HiddenUser -> ForwardInfo.ByAnonymous(
date,
name
)
is MessageOrigin.Public.Channel -> ForwardInfo.PublicChat.FromChannel(
date,
messageId,
chat,
authorSignature
)
is MessageOrigin.Public.Sender -> when (chat) {
is ChannelChat -> ForwardInfo.PublicChat.SentByChannel(
date,
chat
)
is SupergroupChat -> ForwardInfo.PublicChat.FromSupergroup(
date,
chat
)
}
is MessageOrigin.User -> ForwardInfo.ByUser(
date,
user
)
2024-01-07 14:00:07 +00:00
is MessageOrigin.Unknown -> null
2024-01-07 11:12:37 +00:00
}
fun ForwardInfo.messageOrigin() = when (this) {
is ForwardInfo.ByAnonymous -> MessageOrigin.HiddenUser(
senderName,
dateOfOriginal
)
is ForwardInfo.ByUser -> MessageOrigin.User(
user,
dateOfOriginal
)
is ForwardInfo.PublicChat.FromChannel -> MessageOrigin.Public.Channel(
channelChat,
messageId,
dateOfOriginal,
signature
)
is ForwardInfo.PublicChat.FromSupergroup -> MessageOrigin.Public.Sender(
group,
dateOfOriginal
)
is ForwardInfo.PublicChat.SentByChannel -> MessageOrigin.Public.Sender(
channelChat,
dateOfOriginal
)
}