[core] 支持获取群公告图片 URL (#2619)

* fix: announcement protocol

* add: api dump
This commit is contained in:
cssxsh 2023-04-13 18:57:04 +08:00 committed by GitHub
parent 50d37c484a
commit 71e9de3608
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 14 additions and 65 deletions

View File

@ -803,6 +803,7 @@ public final class net/mamoe/mirai/contact/announcement/AnnouncementImage {
public fun equals (Ljava/lang/Object;)Z
public final fun getHeight ()I
public final fun getId ()Ljava/lang/String;
public final fun getUrl ()Ljava/lang/String;
public final fun getWidth ()I
public fun hashCode ()I
public fun toString ()Ljava/lang/String;

View File

@ -803,6 +803,7 @@ public final class net/mamoe/mirai/contact/announcement/AnnouncementImage {
public fun equals (Ljava/lang/Object;)Z
public final fun getHeight ()I
public final fun getId ()Ljava/lang/String;
public final fun getUrl ()Ljava/lang/String;
public final fun getWidth ()I
public fun hashCode ()I
public fun toString ()Ljava/lang/String;

View File

@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
* Copyright 2019-2023 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
@ -31,6 +31,11 @@ public class AnnouncementImage private constructor(
) {
// For stability, do not make it `data class`.
/**
* @since 2.15
*/
public val url: String get() = "https://gdynamic.qpic.cn/gdynamic/$id/628"
public companion object {
public const val SERIAL_NAME: String = "AnnouncementImage"

View File

@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
* Copyright 2019-2023 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
@ -48,12 +48,7 @@ import net.mamoe.mirai.utils.*
import net.mamoe.mirai.utils.Either.Companion.onLeft
import net.mamoe.mirai.utils.Either.Companion.rightOrNull
internal expect class AnnouncementsImpl(
group: GroupImpl,
logger: MiraiLogger,
) : CommonAnnouncementsImpl
internal abstract class CommonAnnouncementsImpl(
internal class AnnouncementsImpl(
protected val group: GroupImpl,
protected val logger: MiraiLogger,
) : Announcements {
@ -412,6 +407,7 @@ internal object AnnouncementProtocol {
showPopup = settings.tipWindowType == 0
requireConfirmation = settings.confirmRequired == 1
showEditCard = settings.isShowEditCard == 1
image = msg.images.firstOrNull()?.toPublic()
},
fid = fid,
allConfirmed = isAllConfirm != 0,

View File

@ -1,5 +1,5 @@
/*
* Copyright 2019-2021 Mamoe Technologies and contributors.
* Copyright 2019-2023 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
@ -63,7 +63,8 @@ internal class GroupAnnouncementImage @MiraiInternalApi constructor(
@Serializable
internal data class GroupAnnouncementMsg(
val text: String,
val text_face: String? = null,
@SerialName("text_face") val textFace: String? = null,
@SerialName("pics") val images: List<GroupAnnouncementImage> = emptyList(),
// val title: String? = null // no title any more
)

View File

@ -1,37 +0,0 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/dev/LICENSE
*/
package net.mamoe.mirai.internal.contact.announcement
import kotlinx.coroutines.runBlocking
import net.mamoe.mirai.contact.announcement.OnlineAnnouncement
import net.mamoe.mirai.internal.contact.GroupImpl
import net.mamoe.mirai.internal.contact.announcement.AnnouncementProtocol.toAnnouncement
import net.mamoe.mirai.utils.MiraiLogger
import net.mamoe.mirai.utils.stream
import java.util.stream.Stream
internal actual class AnnouncementsImpl actual constructor(
group: GroupImpl,
logger: MiraiLogger,
) : CommonAnnouncementsImpl(group, logger) {
override fun asStream(): Stream<OnlineAnnouncement> {
return stream {
var i = 1
while (true) {
val result = runBlocking { getGroupAnnouncementList(i++) } ?: break
if (result.inst.isNullOrEmpty() && result.feeds.isNullOrEmpty()) break
result.inst?.let { yieldAll(it) }
result.feeds?.let { yieldAll(it) }
}
}.map { it.toAnnouncement(group) }
}
}

View File

@ -1,18 +0,0 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
*
* https://github.com/mamoe/mirai/blob/dev/LICENSE
*/
package net.mamoe.mirai.internal.contact.announcement
import net.mamoe.mirai.internal.contact.GroupImpl
import net.mamoe.mirai.utils.MiraiLogger
internal actual class AnnouncementsImpl actual constructor(
group: GroupImpl,
logger: MiraiLogger
) : CommonAnnouncementsImpl(group, logger)