diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index c36d7368f0..4f6d30890b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -451,6 +451,10 @@ const val explanationEntitiesField = "explanation_entities" const val explanationParseModeField = "explanation_parse_mode" const val openPeriodField = "open_period" const val closeDateField = "close_date" +const val openingMinuteField = "opening_minute" +const val closingMinuteField = "closing_minute" +const val openingHoursField = "opening_hours" +const val timeZoneNameField = "time_zone_name" const val smallFileIdField = "small_file_id" const val bigFileIdField = "big_file_id" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessIntro.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessIntro.kt new file mode 100644 index 0000000000..9587153c0a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessIntro.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.types.business_connection + +import dev.inmo.tgbotapi.types.files.Sticker +import dev.inmo.tgbotapi.types.messageField +import dev.inmo.tgbotapi.types.stickerField +import dev.inmo.tgbotapi.types.titleField +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BusinessIntro( + @SerialName(titleField) + val title: String? = null, + @SerialName(messageField) + val message: String? = null, + @SerialName(stickerField) + val sticker: Sticker? = null, +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessLocation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessLocation.kt new file mode 100644 index 0000000000..8d8ea9aa21 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessLocation.kt @@ -0,0 +1,15 @@ +package dev.inmo.tgbotapi.types.business_connection + +import dev.inmo.tgbotapi.types.addressField +import dev.inmo.tgbotapi.types.location.StaticLocation +import dev.inmo.tgbotapi.types.locationField +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BusinessLocation( + @SerialName(addressField) + val address: String, + @SerialName(locationField) + val location: StaticLocation +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours.kt new file mode 100644 index 0000000000..9f1fa84932 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.types.business_connection + +import dev.inmo.tgbotapi.types.openingHoursField +import dev.inmo.tgbotapi.types.timeZoneNameField +import korlibs.time.Timezone +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BusinessOpeningHours( + @SerialName(timeZoneNameField) + val timeZoneName: String, + @SerialName(openingHoursField) + val openingHours: List +) { + val timezone: Timezone + get() = Timezone.valueOf(timeZoneName) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHoursInterval.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHoursInterval.kt new file mode 100644 index 0000000000..d514632ef1 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/BusinessOpeningHoursInterval.kt @@ -0,0 +1,14 @@ +package dev.inmo.tgbotapi.types.business_connection + +import dev.inmo.tgbotapi.types.closingMinuteField +import dev.inmo.tgbotapi.types.openingMinuteField +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class BusinessOpeningHoursInterval( + @SerialName(openingMinuteField) + val opening: MinutesInterval, + @SerialName(closingMinuteField) + val closing: MinutesInterval +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/MinutesInterval.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/MinutesInterval.kt new file mode 100644 index 0000000000..ead72c92bd --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/business_connection/MinutesInterval.kt @@ -0,0 +1,17 @@ +package dev.inmo.tgbotapi.types.business_connection + +import korlibs.time.TimeSpan +import korlibs.time.minutes +import kotlinx.serialization.Serializable +import kotlin.jvm.JvmInline + +@Serializable +@JvmInline +value class MinutesInterval( + val int: Int +) { + val dayTimeSpan: TimeSpan + get() = int.minutes + val weekDay0: Int + get() = dayTimeSpan.inWholeDays.toInt() +}