mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-12-22 16:47:13 +00:00
add toUser cast and fix of sourceUser
This commit is contained in:
parent
8b63ed7fa9
commit
eddd60ebb1
@ -0,0 +1,21 @@
|
|||||||
|
package dev.inmo.tgbotapi.utils
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.types.chat.*
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trying to convert current [PrivateChat] to [User]
|
||||||
|
*
|
||||||
|
* * If [this] actually is [User] or some [Bot], will return this as is
|
||||||
|
* * If [this] is some [PreviewPrivateChat], will create new [CommonUser]
|
||||||
|
*
|
||||||
|
* !!!WARNING!!! The returned [User] CAN BE NOT EQUAL to user from some
|
||||||
|
* [dev.inmo.tgbotapi.types.message.abstracts.ContentMessage] due to absence of some fields (like premium flag or
|
||||||
|
* language)
|
||||||
|
*/
|
||||||
|
fun PrivateChat.toUser(): User = when (this) {
|
||||||
|
is ExtendedPrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||||
|
is CommonUser -> this
|
||||||
|
is CommonBot -> this
|
||||||
|
is PrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||||
|
is ExtendedBot -> this
|
||||||
|
}
|
@ -9,12 +9,14 @@ import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.LocationChosenIn
|
|||||||
import dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery
|
import dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery
|
||||||
import dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery
|
import dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery
|
||||||
import dev.inmo.tgbotapi.types.chat.Chat
|
import dev.inmo.tgbotapi.types.chat.Chat
|
||||||
|
import dev.inmo.tgbotapi.types.chat.PrivateChat
|
||||||
import dev.inmo.tgbotapi.types.chat.User
|
import dev.inmo.tgbotapi.types.chat.User
|
||||||
import dev.inmo.tgbotapi.types.queries.callback.*
|
import dev.inmo.tgbotapi.types.queries.callback.*
|
||||||
import dev.inmo.tgbotapi.types.update.*
|
import dev.inmo.tgbotapi.types.update.*
|
||||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate
|
import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate
|
||||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||||
import dev.inmo.tgbotapi.utils.PreviewFeature
|
import dev.inmo.tgbotapi.utils.PreviewFeature
|
||||||
|
import dev.inmo.tgbotapi.utils.toUser
|
||||||
|
|
||||||
fun CallbackQuery.sourceChat() = when (this) {
|
fun CallbackQuery.sourceChat() = when (this) {
|
||||||
is InlineMessageIdDataCallbackQuery -> null
|
is InlineMessageIdDataCallbackQuery -> null
|
||||||
@ -86,9 +88,13 @@ fun Update.sourceChatWithConverters(
|
|||||||
@PreviewFeature
|
@PreviewFeature
|
||||||
fun Update.sourceChat(): Chat? = sourceChatWithConverters()
|
fun Update.sourceChat(): Chat? = sourceChatWithConverters()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trying to get the user from [Update]. In some cases it can be the user without actual fields like
|
||||||
|
* [dev.inmo.tgbotapi.types.chat.CommonUser.isPremium] due to in these cases will be used [toUser] cast
|
||||||
|
*/
|
||||||
@PreviewFeature
|
@PreviewFeature
|
||||||
fun Update.sourceUser(): User? = when (val data = data) {
|
fun Update.sourceUser(): User? = when (val data = data) {
|
||||||
is FromUser -> data.from
|
is FromUser -> data.from
|
||||||
is WithUser -> data.user
|
is WithUser -> data.user
|
||||||
else -> sourceChat()?.asUser()
|
else -> sourceChat() ?.asUser() ?: ((sourceChat() as? PrivateChat) ?.toUser())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user