From bea056bba3b618dd5f929a3f5545f1cb9d909908 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 30 Dec 2022 21:22:18 +0600 Subject: [PATCH] add full support of editGeneralForumTopic, closeGeneralForumTopic, reopenGeneralForumTopic, hideGeneralForumTopic, unhideGeneralForumTopic --- .../api/chat/forum/CloseGeneralForumTopic.kt | 19 ++++++++++++ .../api/chat/forum/EditGeneralForumTopic.kt | 30 +++++++++++++++++++ .../api/chat/forum/HideGeneralForumTopic.kt | 20 +++++++++++++ .../api/chat/forum/ReopenGeneralForumTopic.kt | 19 ++++++++++++ .../api/chat/forum/UnhideGeneralForumTopic.kt | 21 +++++++++++++ .../chat/forum/CloseGeneralForumTopic.kt | 18 +++++++++++ .../requests/chat/forum/EditForumTopic.kt | 2 +- .../chat/forum/EditGeneralForumTopic.kt | 22 ++++++++++++++ .../chat/forum/GeneralForumRequest.kt | 6 ++++ .../chat/forum/HideGeneralForumTopic.kt | 18 +++++++++++ .../chat/forum/ReopenGeneralForumTopic.kt | 18 +++++++++++ .../chat/forum/UnhideGeneralForumTopic.kt | 18 +++++++++++ 12 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/CloseGeneralForumTopic.kt create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/EditGeneralForumTopic.kt create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/HideGeneralForumTopic.kt create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/ReopenGeneralForumTopic.kt create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/UnhideGeneralForumTopic.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/CloseGeneralForumTopic.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditGeneralForumTopic.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/GeneralForumRequest.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/HideGeneralForumTopic.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/ReopenGeneralForumTopic.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/UnhideGeneralForumTopic.kt diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/CloseGeneralForumTopic.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/CloseGeneralForumTopic.kt new file mode 100644 index 0000000000..f472ed6ecd --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/CloseGeneralForumTopic.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.extensions.api.chat.forum + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.forum.CloseForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.CloseGeneralForumTopic +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.ForumTopic +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.chat.Chat + +suspend fun TelegramBot.closeGeneralForumTopic( + chatId: ChatIdentifier +) = execute( + CloseGeneralForumTopic(chatId) +) + +suspend fun TelegramBot.closeGeneralForumTopic( + chat: Chat +) = closeGeneralForumTopic(chat.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/EditGeneralForumTopic.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/EditGeneralForumTopic.kt new file mode 100644 index 0000000000..0f71e50e2b --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/EditGeneralForumTopic.kt @@ -0,0 +1,30 @@ +package dev.inmo.tgbotapi.extensions.api.chat.forum + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.forum.EditForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.EditGeneralForumTopic +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.CustomEmojiId +import dev.inmo.tgbotapi.types.ForumTopic +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.chat.Chat + +suspend fun TelegramBot.editGeneralForumTopic( + chatId: ChatIdentifier, + name: String +) = execute( + EditGeneralForumTopic( + chatId, + name + ) +) + +suspend fun TelegramBot.editGeneralForumTopic( + chat: Chat, + name: String +) = editGeneralForumTopic(chat.id, name) + +suspend fun TelegramBot.editGeneralForumTopic( + chatIdentifier: ChatIdentifier, + forumTopic: ForumTopic, +) = editGeneralForumTopic(chatIdentifier, forumTopic.name) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/HideGeneralForumTopic.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/HideGeneralForumTopic.kt new file mode 100644 index 0000000000..3bd76b8b7d --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/HideGeneralForumTopic.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.extensions.api.chat.forum + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.forum.CloseForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.CloseGeneralForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.HideGeneralForumTopic +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.ForumTopic +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.chat.Chat + +suspend fun TelegramBot.hideGeneralForumTopic( + chatId: ChatIdentifier +) = execute( + HideGeneralForumTopic(chatId) +) + +suspend fun TelegramBot.hideGeneralForumTopic( + chat: Chat +) = hideGeneralForumTopic(chat.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/ReopenGeneralForumTopic.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/ReopenGeneralForumTopic.kt new file mode 100644 index 0000000000..4492c5b599 --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/ReopenGeneralForumTopic.kt @@ -0,0 +1,19 @@ +package dev.inmo.tgbotapi.extensions.api.chat.forum + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.forum.ReopenForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.ReopenGeneralForumTopic +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.ForumTopic +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.chat.Chat + +suspend fun TelegramBot.reopenGeneralForumTopic( + chatId: ChatIdentifier +) = execute( + ReopenGeneralForumTopic(chatId) +) + +suspend fun TelegramBot.reopenGeneralForumTopic( + chat: Chat +) = reopenGeneralForumTopic(chat.id) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/UnhideGeneralForumTopic.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/UnhideGeneralForumTopic.kt new file mode 100644 index 0000000000..1f6ef3c5cb --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/forum/UnhideGeneralForumTopic.kt @@ -0,0 +1,21 @@ +package dev.inmo.tgbotapi.extensions.api.chat.forum + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.forum.CloseForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.CloseGeneralForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.HideGeneralForumTopic +import dev.inmo.tgbotapi.requests.chat.forum.UnhideGeneralForumTopic +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.ForumTopic +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.chat.Chat + +suspend fun TelegramBot.unhideGeneralForumTopic( + chatId: ChatIdentifier +) = execute( + UnhideGeneralForumTopic(chatId) +) + +suspend fun TelegramBot.unhideGeneralForumTopic( + chat: Chat +) = unhideGeneralForumTopic(chat.id) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/CloseGeneralForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/CloseGeneralForumTopic.kt new file mode 100644 index 0000000000..8217a3848e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/CloseGeneralForumTopic.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.utils.RGBColor +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer + +@Serializable +data class CloseGeneralForumTopic ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier +): ModifyForumRequest, GeneralForumRequest { + override fun method(): String = "closeGeneralForumTopic" + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditForumTopic.kt index 411642041a..df11c5e404 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditForumTopic.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditForumTopic.kt @@ -15,7 +15,7 @@ data class EditForumTopic ( val iconEmojiId: CustomEmojiId? = null, ): ModifyForumRequest { init { - if (name.length !in threadNameLength) { + if (name != null && name.length !in threadNameLength) { throw IllegalArgumentException("Thread name must be in $threadNameLength range") } } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditGeneralForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditGeneralForumTopic.kt new file mode 100644 index 0000000000..bdbc0c08d3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/EditGeneralForumTopic.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class EditGeneralForumTopic ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(nameField) + val name: String +): ModifyForumRequest, GeneralForumRequest { + init { + if (name.length !in threadNameLength) { + throw IllegalArgumentException("Thread name must be in $threadNameLength range") + } + } + + override fun method(): String = "editGeneralForumTopic" + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/GeneralForumRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/GeneralForumRequest.kt new file mode 100644 index 0000000000..708423b4d4 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/GeneralForumRequest.kt @@ -0,0 +1,6 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest + +sealed interface GeneralForumRequest : ForumRequest, ChatRequest diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/HideGeneralForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/HideGeneralForumTopic.kt new file mode 100644 index 0000000000..fe5e15b939 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/HideGeneralForumTopic.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.utils.RGBColor +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer + +@Serializable +data class HideGeneralForumTopic ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier +): ModifyForumRequest, GeneralForumRequest { + override fun method(): String = "hideGeneralForumTopic" + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/ReopenGeneralForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/ReopenGeneralForumTopic.kt new file mode 100644 index 0000000000..768c83f05c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/ReopenGeneralForumTopic.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.utils.RGBColor +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer + +@Serializable +data class ReopenGeneralForumTopic ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, +): ModifyForumRequest, GeneralForumRequest { + override fun method(): String = "reopenGeneralForumTopic" + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/UnhideGeneralForumTopic.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/UnhideGeneralForumTopic.kt new file mode 100644 index 0000000000..0ac38f053a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/forum/UnhideGeneralForumTopic.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.requests.chat.forum + +import dev.inmo.tgbotapi.abstracts.types.ChatRequest +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.utils.RGBColor +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer + +@Serializable +data class UnhideGeneralForumTopic ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier +): ModifyForumRequest, GeneralForumRequest { + override fun method(): String = "unhideGeneralForumTopic" + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +}