diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt index a56d8c5523..a45d428a8d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.types.* import kotlinx.serialization.DeserializationStrategy interface ChatInviteLinkRequest : SimpleRequest { - val chatId: ChatId + val chatId: ChatIdentifier override val resultDeserializer: DeserializationStrategy get() = CommonInviteLink.serializer() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt index 32ff101b0e..a6212c4a44 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt @@ -8,14 +8,14 @@ import kotlinx.serialization.* @Serializable data class CreateChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(expireDateField) - private val expirationUnixTimeStamp: UnixTimeStamp? = null, + private val expirationUnixTimeStamp: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : EditChatInviteLinkRequest { override val expireDate: DateTime? - get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + get() = expirationUnixTimeStamp ?.asDate override val requestSerializer: SerializationStrategy<*> get() = serializer() @@ -27,5 +27,5 @@ fun CreateChatInviteLink( expireDate: DateTime, membersLimit: MembersLimit? = null ): CreateChatInviteLink = CreateChatInviteLink( - chatId, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit + chatId, expireDate.toTelegramDate(), membersLimit ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt index 2e6c7e2bce..3ea6fc0eda 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt @@ -9,16 +9,16 @@ import kotlinx.serialization.* @Serializable data class EditChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(inviteLinkField) override val inviteLink: String, @SerialName(expireDateField) - private val expirationUnixTimeStamp: UnixTimeStamp? = null, + private val expirationUnixTimeStamp: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : EditChatInviteLinkRequest, KnownChatInviteLinkRequest { override val expireDate: DateTime? - get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + get() = expirationUnixTimeStamp ?.asDate override val requestSerializer: SerializationStrategy<*> get() = serializer() @@ -26,10 +26,10 @@ data class EditChatInviteLink( } fun EditChatInviteLink( - chatId: ChatId, + chatId: ChatIdentifier, inviteLink: String, expireDate: DateTime, membersLimit: MembersLimit? = null ): EditChatInviteLink = EditChatInviteLink( - chatId, inviteLink, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit + chatId, inviteLink, expireDate.toTelegramDate(), membersLimit ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt index 9d14035c37..617f181e2a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.* @Serializable data class RevokeChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(inviteLinkField) override val inviteLink: String ) : KnownChatInviteLinkRequest { diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt new file mode 100644 index 0000000000..93ed35d244 --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.createChatInviteLink( + chatId: ChatIdentifier, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = execute(CreateChatInviteLink(chatId, expiration, membersLimit)) + +suspend fun TelegramBot.createChatInviteLink( + chat: PublicChat, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chat.id, expiration, membersLimit) + +suspend fun TelegramBot.createChatInviteLink( + chatId: ChatIdentifier, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chatId, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.createChatInviteLink( + chat: PublicChat, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chat.id, expiration.toTelegramDate(), membersLimit) diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt new file mode 100644 index 0000000000..c5fdf01154 --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt @@ -0,0 +1,64 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink +import dev.inmo.tgbotapi.requests.chat.invite_links.EditChatInviteLink +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.editChatInviteLink( + chatId: ChatIdentifier, + previousLink: String, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = execute(EditChatInviteLink(chatId, previousLink, expiration, membersLimit)) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: String, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chat.id, previousLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chatId: ChatIdentifier, + previousLink: String, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chatId, previousLink, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: String, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chat.id, previousLink, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: ChatIdentifier, + previousLink: ChatInviteLink, + expiration: TelegramDate? = previousLink.expirationDateTime ?.toTelegramDate(), + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: ChatIdentifier, + previousLink: ChatInviteLink, + expiration: DateTime, + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink, + expiration: TelegramDate? = previousLink.expirationDateTime ?.toTelegramDate(), + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink, + expiration: DateTime, + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt new file mode 100644 index 0000000000..4e2a4edeee --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.revokeChatInviteLink( + chatId: ChatIdentifier, + previousLink: String +) = execute(RevokeChatInviteLink(chatId, previousLink)) + +suspend fun TelegramBot.revokeChatInviteLink( + chat: PublicChat, + previousLink: String +) = revokeChatInviteLink(chat.id, previousLink) + +suspend fun TelegramBot.revokeChatInviteLink( + chatId: ChatIdentifier, + previousLink: ChatInviteLink +) = revokeChatInviteLink(chatId, previousLink.inviteLink) + +suspend fun TelegramBot.revokeChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink +) = revokeChatInviteLink(chat, previousLink.inviteLink)