mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-11-13 15:23:19 +00:00
fixes
This commit is contained in:
1 parent
c2f0bcd98b
commit
1d8b4255a6
14 files changed
+241
-161
No files matched your search
+13
-13
@@ -16,16 +16,16 @@ import dev.inmo.tgbotapi.utils.serializers.UnitFromBooleanSerializer
|
||||
import kotlinx.serialization.*
|
||||
|
||||
/**
|
||||
* Creates a plain-text draft for a direct messages topic.
|
||||
* Creates a plain-text message draft.
|
||||
*
|
||||
* @param directMessageThreadId Direct messages topic identifier. Defaults from [chatId].
|
||||
* @param threadId Message thread identifier. Defaults from [chatId].
|
||||
*/
|
||||
fun SendMessageDraft(
|
||||
chatId: IdChatIdentifier,
|
||||
draftId: DraftId,
|
||||
text: String,
|
||||
parseMode: ParseMode? = null,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
threadId: MessageThreadId? = chatId.threadIdOrDirectMessageThreadIdAsThreadId,
|
||||
canStop: Boolean? = null,
|
||||
keepOnStop: Boolean? = null
|
||||
) = SendMessageDraft(
|
||||
@@ -34,21 +34,21 @@ fun SendMessageDraft(
|
||||
text = text,
|
||||
parseMode = parseMode,
|
||||
rawEntities = null,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
threadId = threadId,
|
||||
canStop = canStop,
|
||||
keepOnStop = keepOnStop
|
||||
)
|
||||
|
||||
/**
|
||||
* Creates an entity-formatted draft for a direct messages topic.
|
||||
* Creates an entity-formatted message draft.
|
||||
*
|
||||
* @param directMessageThreadId Direct messages topic identifier. Defaults from [chatId].
|
||||
* @param threadId Message thread identifier. Defaults from [chatId].
|
||||
*/
|
||||
fun SendMessageDraft(
|
||||
chatId: IdChatIdentifier,
|
||||
draftId: DraftId,
|
||||
entities: TextSourcesList,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
threadId: MessageThreadId? = chatId.threadIdOrDirectMessageThreadIdAsThreadId,
|
||||
canStop: Boolean? = null,
|
||||
keepOnStop: Boolean? = null
|
||||
) = SendMessageDraft(
|
||||
@@ -57,15 +57,15 @@ fun SendMessageDraft(
|
||||
text = entities.makeString(),
|
||||
parseMode = null,
|
||||
rawEntities = entities.toRawMessageEntities(),
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
threadId = threadId,
|
||||
canStop = canStop,
|
||||
keepOnStop = keepOnStop
|
||||
)
|
||||
|
||||
/**
|
||||
* Streams a partial text message draft to a direct messages topic.
|
||||
* Streams a partial text message draft.
|
||||
*
|
||||
* @param directMessageThreadId Direct messages topic identifier. Defaults from [chatId].
|
||||
* @param threadId Message thread identifier. Defaults from [chatId].
|
||||
*/
|
||||
@ConsistentCopyVisibility
|
||||
@Serializable
|
||||
@@ -81,16 +81,16 @@ data class SendMessageDraft internal constructor(
|
||||
@SerialName(entitiesField)
|
||||
private val rawEntities: List<RawMessageEntity>? = null,
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@SerialName(directMessagesTopicIdField)
|
||||
@SerialName(messageThreadIdField)
|
||||
@EncodeDefault
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
override val threadId: MessageThreadId? = chatId.threadIdOrDirectMessageThreadIdAsThreadId,
|
||||
@SerialName(canStopField)
|
||||
val canStop: Boolean? = null,
|
||||
@SerialName(keepOnStopField)
|
||||
val keepOnStop: Boolean? = null
|
||||
) : SendChatMessageRequest<Unit>,
|
||||
TextedOutput,
|
||||
OptionallyDirectMessageThreadRequest
|
||||
OptionallyMessageThreadRequest
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text)
|
||||
|
||||
+8
-6
@@ -1,13 +1,15 @@
|
||||
package dev.inmo.tgbotapi.requests.send
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.DirectMessageThreadId
|
||||
import dev.inmo.tgbotapi.requests.send.abstracts.OptionallyMessageThreadRequest
|
||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
|
||||
import dev.inmo.tgbotapi.types.MessageThreadId
|
||||
import dev.inmo.tgbotapi.types.canStopField
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.directMessagesTopicIdField
|
||||
import dev.inmo.tgbotapi.types.draftIdField
|
||||
import dev.inmo.tgbotapi.types.keepOnStopField
|
||||
import dev.inmo.tgbotapi.types.messageThreadIdField
|
||||
import dev.inmo.tgbotapi.types.threadIdOrDirectMessageThreadIdAsThreadId
|
||||
import dev.inmo.tgbotapi.types.richMessageField
|
||||
import dev.inmo.tgbotapi.types.rich.InputRichMessage
|
||||
import dev.inmo.tgbotapi.types.rich.multipartFiles
|
||||
@@ -23,7 +25,7 @@ import kotlinx.serialization.SerializationStrategy
|
||||
* with the complete message to persist it in the user's chat.
|
||||
*
|
||||
* @param chatId Numeric target chat identifier.
|
||||
* @param directMessageThreadId Direct messages topic identifier. Defaults from [chatId].
|
||||
* @param threadId Message thread identifier. Defaults from [chatId].
|
||||
* @see <a href="https://core.telegram.org/bots/api#sendrichmessagedraft">sendRichMessageDraft</a>
|
||||
*/
|
||||
@Serializable
|
||||
@@ -37,13 +39,13 @@ data class SendRichMessageDraft(
|
||||
val draftId: Long,
|
||||
@SerialName(richMessageField)
|
||||
val richMessage: InputRichMessage,
|
||||
@SerialName(directMessagesTopicIdField)
|
||||
val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(messageThreadIdField)
|
||||
override val threadId: MessageThreadId? = chatId.threadIdOrDirectMessageThreadIdAsThreadId,
|
||||
@SerialName(canStopField)
|
||||
val canStop: Boolean? = null,
|
||||
@SerialName(keepOnStopField)
|
||||
val keepOnStop: Boolean? = null
|
||||
) : SimpleRequest<Unit> {
|
||||
) : SimpleRequest<Unit>, OptionallyMessageThreadRequest {
|
||||
init {
|
||||
require(draftId != 0L) {
|
||||
"draftId of SendRichMessageDraft must be non-zero"
|
||||
|
||||
@@ -6,7 +6,9 @@ import dev.inmo.micro_utils.common.Warning
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.chat.User
|
||||
import dev.inmo.tgbotapi.utils.RiskFeature
|
||||
import dev.inmo.tgbotapi.utils.directMessageThreadId
|
||||
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
||||
import dev.inmo.tgbotapi.utils.messageThreadId
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
@@ -182,6 +184,12 @@ val ChatIdentifier.threadId: MessageThreadId?
|
||||
val ChatIdentifier.directMessageThreadId: DirectMessageThreadId?
|
||||
get() = (this as? IdChatIdentifier) ?.directMessageThreadId
|
||||
|
||||
val ChatIdentifier.directMessageThreadIdOrMessageThreadIdAsDirectMessageThreadId: DirectMessageThreadId?
|
||||
get() = directMessageThreadId ?: (threadId ?.directMessageThreadId())
|
||||
|
||||
val ChatIdentifier.threadIdOrDirectMessageThreadIdAsThreadId: MessageThreadId?
|
||||
get() = threadId ?: (directMessageThreadId ?.messageThreadId())
|
||||
|
||||
/** Returns the embedded business connection, or `null` when no business connection is available. */
|
||||
val ChatIdentifier.businessConnectionId: BusinessConnectionId?
|
||||
get() = (this as? IdChatIdentifier) ?.businessConnectionId
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package dev.inmo.tgbotapi.utils
|
||||
|
||||
import dev.inmo.tgbotapi.types.DirectMessageThreadId
|
||||
import dev.inmo.tgbotapi.types.MessageThreadId
|
||||
|
||||
/**
|
||||
* Converts a [MessageThreadId] instance to a [DirectMessageThreadId] by using its underlying `long` value.
|
||||
*
|
||||
* @receiver The [MessageThreadId] instance to be converted.
|
||||
* @return A new [DirectMessageThreadId] instance with the same `long` value as the receiver.
|
||||
*/
|
||||
fun MessageThreadId.toDirect() = DirectMessageThreadId(long)
|
||||
/**
|
||||
* Converts a [DirectMessageThreadId] instance to a [MessageThreadId] instance.
|
||||
*
|
||||
* This extension function facilitates type transformation between two inline classes
|
||||
* with the same underlying value, allowing seamless usage of their respective types.
|
||||
*
|
||||
* @receiver The [DirectMessageThreadId] instance to be transformed.
|
||||
* @return The corresponding [MessageThreadId] instance containing the same underlying value.
|
||||
*/
|
||||
fun DirectMessageThreadId.toCommon() = MessageThreadId(long)
|
||||
|
||||
/**
|
||||
* Returns the current instance of [DirectMessageThreadId].
|
||||
*
|
||||
* This method provides a straightforward way to retrieve the object in its current state
|
||||
* without introducing any modifications or transformations.
|
||||
*
|
||||
* @return The current instance of [DirectMessageThreadId].
|
||||
*/
|
||||
fun DirectMessageThreadId.directMessageThreadId(): DirectMessageThreadId = this
|
||||
/**
|
||||
* Converts this [MessageThreadId] instance to a [DirectMessageThreadId].
|
||||
*
|
||||
* @return A new [DirectMessageThreadId] instance with the same underlying `long` value as this [MessageThreadId].
|
||||
*/
|
||||
fun MessageThreadId.directMessageThreadId(): DirectMessageThreadId = toDirect()
|
||||
|
||||
/**
|
||||
* Converts a [DirectMessageThreadId] instance to a [MessageThreadId] instance.
|
||||
*
|
||||
* This method provides a straightforward way to transform a [DirectMessageThreadId]
|
||||
* object into a [MessageThreadId] object by leveraging the underlying value.
|
||||
*
|
||||
* @return The [MessageThreadId] instance containing the same underlying value as the original [DirectMessageThreadId].
|
||||
*/
|
||||
fun DirectMessageThreadId.messageThreadId(): MessageThreadId = toCommon()
|
||||
/**
|
||||
* Returns the current instance of the MessageThreadId.
|
||||
*
|
||||
* The method is a utility function that allows for consistent handling of `MessageThreadId`
|
||||
* instances and can be used when chaining operations without altering the instance.
|
||||
*
|
||||
* @return The current `MessageThreadId` instance.
|
||||
*/
|
||||
fun MessageThreadId.messageThreadId(): MessageThreadId = this
|
||||
@@ -47,14 +47,14 @@ class GeneralBotApi103Test {
|
||||
|
||||
assertEquals(chatId, messageDraft.chatId)
|
||||
assertEquals(chatId, richDraft.chatId)
|
||||
assertEquals(DirectMessageThreadId(4L), messageDraft.directMessageThreadId)
|
||||
assertEquals(DirectMessageThreadId(4L), richDraft.directMessageThreadId)
|
||||
assertEquals(MessageThreadId(4L), messageDraft.threadId)
|
||||
assertEquals(MessageThreadId(4L), richDraft.threadId)
|
||||
assertEquals("3", messageDraftJson[chatIdField].toString())
|
||||
assertEquals("3", richDraftJson[chatIdField].toString())
|
||||
assertEquals("4", messageDraftJson[directMessagesTopicIdField].toString())
|
||||
assertEquals("4", richDraftJson[directMessagesTopicIdField].toString())
|
||||
assertEquals(null, messageDraftJson[messageThreadIdField])
|
||||
assertEquals(null, richDraftJson[messageThreadIdField])
|
||||
assertEquals("4", messageDraftJson[messageThreadIdField].toString())
|
||||
assertEquals("4", richDraftJson[messageThreadIdField].toString())
|
||||
assertEquals(null, messageDraftJson[directMessagesTopicIdField])
|
||||
assertEquals(null, richDraftJson[directMessagesTopicIdField])
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in new issue
Block a user