1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-12-21 05:35:42 +00:00

resolution of #484

This commit is contained in:
2021-10-18 14:45:57 +06:00
parent 65c1f018ac
commit 91212eaa3a
25 changed files with 86 additions and 45 deletions

View File

@@ -2,8 +2,7 @@
package dev.inmo.tgbotapi.extensions.utils
import dev.inmo.tgbotapi.CommonAbstracts.CommonSendInvoiceData
import dev.inmo.tgbotapi.CommonAbstracts.FromUser
import dev.inmo.tgbotapi.CommonAbstracts.*
import dev.inmo.tgbotapi.requests.send.payments.SendInvoice
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.CallbackQuery.*
@@ -3154,6 +3153,15 @@ inline fun Any.asFromUser(): FromUser? = this as? FromUser
@PreviewFeature
inline fun Any.requireFromUser(): FromUser = this as FromUser
@PreviewFeature
inline fun <T> Any.whenWithUser(block: (WithUser) -> T) = asWithUser() ?.let(block)
@PreviewFeature
inline fun Any.asWithUser(): WithUser? = this as? WithUser
@PreviewFeature
inline fun Any.requireWithUser(): WithUser = this as WithUser
@PreviewFeature
inline fun <T> Any.whenWithOptionalLanguageCode(block: (WithOptionalLanguageCode) -> T) = asWithOptionalLanguageCode() ?.let(block)

View File

@@ -1,5 +1,7 @@
package dev.inmo.tgbotapi.extensions.utils.extensions
import dev.inmo.tgbotapi.CommonAbstracts.FromUser
import dev.inmo.tgbotapi.CommonAbstracts.WithUser
import dev.inmo.tgbotapi.extensions.utils.asFromUser
import dev.inmo.tgbotapi.extensions.utils.asUser
import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat
@@ -12,20 +14,24 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update
import dev.inmo.tgbotapi.utils.PreviewFeature
@PreviewFeature
fun Update.sourceChat(): Chat? = when (this) {
is MediaGroupUpdate -> when (this) {
fun Update.sourceChat(): Chat? = when {
this is MediaGroupUpdate -> when (this) {
is SentMediaGroupUpdate -> data.chat
is EditMediaGroupUpdate -> data.chat
}
is BaseMessageUpdate -> data.chat
is InlineQueryUpdate -> data.from
is ChosenInlineResultUpdate -> data.user
is CallbackQueryUpdate -> data.user
is PreCheckoutQueryUpdate -> data.user
is PollAnswerUpdate -> data.user
is ShippingQueryUpdate -> data.user
else -> null
this is BaseMessageUpdate -> data.chat
else -> {
when (val data = data) {
is FromUser -> data.from
is WithUser -> data.user
else -> null
}
}
}
@PreviewFeature
fun Update.sourceUser(): User? = data.asFromUser()?.user ?: sourceChat()?.asUser()
fun Update.sourceUser(): User? = when (val data = data) {
is FromUser -> data.from
is WithUser -> data.user
else -> sourceChat()?.asUser()
}