1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-11-04 15:33:47 +00:00

Merge branch 'master' into 0.38.0

This commit is contained in:
InsanusMokrassar 2021-12-31 02:55:54 +06:00 committed by GitHub
commit e5a36225f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 93 additions and 7 deletions

View File

@ -1,5 +1,6 @@
# TelegramBotAPI changelog # TelegramBotAPI changelog
## 0.38.0 ## 0.38.0
* `Common`: * `Common`:
@ -13,7 +14,14 @@
## 0.37.4 ## 0.37.4
## 0.37.3 Hotfix of 0.37.3 * `Common`:
* `Version`:
* `MicroUtils`: `0.8.7` -> `0.8.9`
* `Core`:
* New `SupergroupEvent` subtype: `MigratedToSupergroup`. This event is sent when a group is converted to a supergroup while bot is in the group.
* Helper extenstion functions on `ChatEvent` to cast it to `MigratedToSupergroup`.
## 0.37.3 Hotfix of 0.37.2
* `Core`: * `Core`:
* Fixes in hierarchy (and creating) of messages from channels * Fixes in hierarchy (and creating) of messages from channels
@ -22,6 +30,8 @@
`0.37.2` changelog: `0.37.2` changelog:
_This update contains [Telegram Bot API 5.5](https://core.telegram.org/bots/api-changelog#december-7-2021) implementation_
* `Common`: * `Common`:
* `Version`: * `Version`:
* `MicroUtils`: `0.8.2` -> `0.8.7` * `MicroUtils`: `0.8.2` -> `0.8.7`

View File

@ -12,6 +12,7 @@ klock_version=2.4.10
uuid_version=0.3.1 uuid_version=0.3.1
ktor_version=1.6.7 ktor_version=1.6.7
micro_utils_version=0.9.0 micro_utils_version=0.9.0
javax_activation_version=1.1.1 javax_activation_version=1.1.1

View File

@ -1,8 +1,8 @@
package dev.inmo.tgbotapi.types.message.ChatEvents package dev.inmo.tgbotapi.types.message.ChatEvents
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent
class GroupChatCreated( class GroupChatCreated(
val migratedTo: ChatIdentifier? val migratedTo: ChatId?
): GroupEvent ): GroupEvent

View File

@ -0,0 +1,11 @@
package dev.inmo.tgbotapi.types.message.ChatEvents
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent
/**
* This event is sent when a group is converted to a supergroup.
*/
data class MigratedToSupergroup(
val migratedFrom: ChatId
): SupergroupEvent

View File

@ -1,8 +1,8 @@
package dev.inmo.tgbotapi.types.message.ChatEvents package dev.inmo.tgbotapi.types.message.ChatEvents
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent
class SupergroupChatCreated( class SupergroupChatCreated(
val migratedFrom: ChatIdentifier? val migratedFrom: ChatId?
): SupergroupEvent ): SupergroupEvent

View File

@ -75,8 +75,8 @@ internal data class RawMessage(
private val group_chat_created: Boolean = false, private val group_chat_created: Boolean = false,
private val supergroup_chat_created: Boolean = false, private val supergroup_chat_created: Boolean = false,
private val channel_chat_created: Boolean = false, private val channel_chat_created: Boolean = false,
private val migrate_to_chat_id: ChatIdentifier? = null, private val migrate_to_chat_id: ChatId? = null,
private val migrate_from_chat_id: ChatIdentifier? = null, private val migrate_from_chat_id: ChatId? = null,
private val pinned_message: RawMessage? = null, private val pinned_message: RawMessage? = null,
private val invoice: Invoice? = null, private val invoice: Invoice? = null,
private val dice: Dice? = null, private val dice: Dice? = null,
@ -194,6 +194,9 @@ internal data class RawMessage(
supergroup_chat_created -> SupergroupChatCreated( supergroup_chat_created -> SupergroupChatCreated(
migrate_from_chat_id migrate_from_chat_id
) )
migrate_from_chat_id != null -> MigratedToSupergroup(
migrate_from_chat_id
)
channel_chat_created -> ChannelChatCreated() channel_chat_created -> ChannelChatCreated()
pinned_message != null -> PinnedMessage(pinned_message.asMessage) pinned_message != null -> PinnedMessage(pinned_message.asMessage)
proximity_alert_triggered != null -> proximity_alert_triggered proximity_alert_triggered != null -> proximity_alert_triggered

View File

@ -0,0 +1,52 @@
package dev.inmo.tgbotapi.types.message.ChatEvents
import dev.inmo.tgbotapi.TestsJsonFormat
import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate
import dev.inmo.tgbotapi.extensions.utils.asMigratedToSupergroup
import dev.inmo.tgbotapi.extensions.utils.asSupergroupChatCreated
import dev.inmo.tgbotapi.extensions.utils.asSupergroupEventMessage
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.update.abstracts.UpdateDeserializationStrategy
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertIs
import kotlin.test.fail
class MigratedToSupergroupTest {
@Test
fun MigratedToSupergroupEventShouldBeParsed() {
val payload = """
{
"update_id": 42,
"message": {
"message_id": 1,
"from": {
"id": 1087968824,
"is_bot": true,
"first_name": "Group",
"username": "GroupAnonymousBot"
},
"sender_chat": {
"id": 42,
"title": "MigratedToSupergroupTest",
"type": "supergroup"
},
"chat": {
"id": 42,
"title": "MigratedToSupergroupTest",
"type": "supergroup"
},
"date": 1639955462,
"migrate_from_chat_id": 57005
}
}
""".trimIndent()
val update = TestsJsonFormat.decodeFromString(UpdateDeserializationStrategy, payload)
val message = update.asMessageUpdate() ?: fail("update should be of MessageUpdate subtype")
val data = message.data.asSupergroupEventMessage() ?: fail("message should be of SupergroupEventMessage subtype")
val event = data.chatEvent.asMigratedToSupergroup() ?: fail("event should be of SupergroupChatCreated subtype")
assertEquals(ChatId(57005), event.migratedFrom)
}
}

View File

@ -3081,6 +3081,15 @@ inline fun ChatEvent.asSupergroupChatCreated(): SupergroupChatCreated? = this as
@PreviewFeature @PreviewFeature
inline fun ChatEvent.requireSupergroupChatCreated(): SupergroupChatCreated = this as SupergroupChatCreated inline fun ChatEvent.requireSupergroupChatCreated(): SupergroupChatCreated = this as SupergroupChatCreated
@PreviewFeature
inline fun <T> ChatEvent.whenMigratedToSupergroup(block: (MigratedToSupergroup) -> T) = asMigratedToSupergroup() ?.let(block)
@PreviewFeature
inline fun ChatEvent.asMigratedToSupergroup(): MigratedToSupergroup? = this as? MigratedToSupergroup
@PreviewFeature
inline fun ChatEvent.requireMigratedToSupergroup(): MigratedToSupergroup = this as MigratedToSupergroup
@PreviewFeature @PreviewFeature
inline fun <T> ChatEvent.whenChannelEvent(block: (ChannelEvent) -> T) = asChannelEvent() ?.let(block) inline fun <T> ChatEvent.whenChannelEvent(block: (ChannelEvent) -> T) = asChannelEvent() ?.let(block)