diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt new file mode 100644 index 0000000000..e42e84509c --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/ApproveChatJoinRequest.kt @@ -0,0 +1,39 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.ApproveChatJoinRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate + +suspend fun TelegramBot.approveChatJoinRequest( + chatId: ChatIdentifier, + userId: UserId +) = execute(ApproveChatJoinRequest(chatId, userId)) + +suspend fun TelegramBot.approveChatJoinRequest( + chat: PublicChat, + userId: UserId +) = approveChatJoinRequest(chat.id, userId) + +suspend fun TelegramBot.approveChatJoinRequest( + chatId: ChatIdentifier, + user: User +) = approveChatJoinRequest(chatId, user.id) + +suspend fun TelegramBot.approveChatJoinRequest( + chat: PublicChat, + user: User +) = approveChatJoinRequest(chat.id, user.id) + +suspend fun TelegramBot.approveChatJoinRequest( + chatJoinRequest: ChatJoinRequest +) = approveChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user) + +suspend fun TelegramBot.approve( + chatJoinRequest: ChatJoinRequest +) = approveChatJoinRequest(chatJoinRequest) + +suspend fun TelegramBot.approveChatJoinRequest( + chatJoinRequestUpdate: ChatJoinRequestUpdate +) = approveChatJoinRequest(chatJoinRequestUpdate.data) diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt new file mode 100644 index 0000000000..b6ca8a888b --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/DeclineChatJoinRequest.kt @@ -0,0 +1,40 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.ApproveChatJoinRequest +import dev.inmo.tgbotapi.requests.chat.invite_links.DeclineChatJoinRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat +import dev.inmo.tgbotapi.types.update.ChatJoinRequestUpdate + +suspend fun TelegramBot.declineChatJoinRequest( + chatId: ChatIdentifier, + userId: UserId +) = execute(DeclineChatJoinRequest(chatId, userId)) + +suspend fun TelegramBot.declineChatJoinRequest( + chat: PublicChat, + userId: UserId +) = declineChatJoinRequest(chat.id, userId) + +suspend fun TelegramBot.declineChatJoinRequest( + chatId: ChatIdentifier, + user: User +) = declineChatJoinRequest(chatId, user.id) + +suspend fun TelegramBot.declineChatJoinRequest( + chat: PublicChat, + user: User +) = declineChatJoinRequest(chat.id, user.id) + +suspend fun TelegramBot.declineChatJoinRequest( + chatJoinRequest: ChatJoinRequest +) = declineChatJoinRequest(chatJoinRequest.chat, chatJoinRequest.user) + +suspend fun TelegramBot.decline( + chatJoinRequest: ChatJoinRequest +) = declineChatJoinRequest(chatJoinRequest) + +suspend fun TelegramBot.declineChatJoinRequest( + chatJoinRequestUpdate: ChatJoinRequestUpdate +) = declineChatJoinRequest(chatJoinRequestUpdate.data) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/ChatJoinRequestAnswer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/ChatJoinRequestAnswer.kt new file mode 100644 index 0000000000..78c34d8c5c --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/ChatJoinRequestAnswer.kt @@ -0,0 +1,38 @@ +package dev.inmo.tgbotapi.requests.chat.invite_links + +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationStrategy +import kotlinx.serialization.builtins.serializer + +sealed interface ChatJoinRequestAnswer : SimpleRequest { + val chatId: ChatIdentifier + val userId: UserId + + override val resultDeserializer: DeserializationStrategy + get() = Boolean.serializer() +} + +@Serializable +data class ApproveChatJoinRequest( + override val chatId: ChatIdentifier, + override val userId: UserId +) : ChatJoinRequestAnswer { + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "approveChatJoinRequest" +} + +@Serializable +data class DeclineChatJoinRequest( + override val chatId: ChatIdentifier, + override val userId: UserId +) : ChatJoinRequestAnswer { + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "declineChatJoinRequest" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt index 1606ea6ed4..913015c988 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt @@ -13,6 +13,7 @@ const val UPDATE_POLL = "poll" const val UPDATE_POLL_ANSWER = "poll_answer" const val MY_CHAT_MEMBER = "my_chat_member" const val CHAT_MEMBER = "chat_member" +const val CHAT_JOIN_REQUEST = "chat_join_request" val ALL_UPDATES_LIST = listOf( UPDATE_MESSAGE, @@ -27,5 +28,6 @@ val ALL_UPDATES_LIST = listOf( UPDATE_POLL, UPDATE_POLL_ANSWER, MY_CHAT_MEMBER, - CHAT_MEMBER + CHAT_MEMBER, + CHAT_JOIN_REQUEST )