From 3efe7e08432f1ebee52f0a044170e570ad225b87 Mon Sep 17 00:00:00 2001 From: MrXiaoM Date: Fri, 19 Jan 2024 15:27:46 +0800 Subject: [PATCH] everything should be internal --- .../overflow/internal/BotFactoryImpl.kt | 2 +- .../top/mrxiaom/overflow/internal/Overflow.kt | 5 +- .../overflow/internal/contact/BotWrapper.kt | 2 +- .../internal/contact/FriendWrapper.kt | 2 +- .../overflow/internal/contact/GroupWrapper.kt | 2 +- .../internal/contact/MemberWrapper.kt | 2 +- .../internal/contact/OtherClientWrapper.kt | 2 +- .../internal/contact/StrangerWrapper.kt | 2 +- .../contact/data/AnnouncementsWrapper.kt | 6 +- .../internal/contact/data/EssencesWrapper.kt | 6 +- .../contact/data/GroupSettingsWrapper.kt | 2 +- .../contact/data/MemberActiveWrapper.kt | 2 +- .../contact/data/RemoteFilesWrapper.kt | 9 +-- .../overflow/internal/data/ContactInfoImpl.kt | 14 ++-- .../overflow/internal/data/UserProfileImpl.kt | 2 +- .../overflow/internal/listener/friend.kt | 11 ++- .../overflow/internal/listener/group.kt | 9 +-- .../internal/message/OnebotMessages.kt | 78 +++---------------- .../message/data/MessageSourceImpl.kt | 22 +++--- .../internal/message/data/UnknownMessage.kt | 2 +- .../internal/message/data/WrappedAudio.kt | 2 +- .../message/data/WrappedFileMessage.kt | 2 +- .../message/data/WrappedImageProtocol.kt | 2 +- .../message/data/WrappedMarketFace.kt | 3 +- .../message/data/WrappedMusicShare.kt | 66 ++++++++++++++++ .../internal/message/data/WrappedVideo.kt | 2 +- .../internal/plugin/BuiltInCommands.kt | 14 ++-- .../internal/plugin/OverflowCoreAsPlugin.kt | 4 +- .../overflow/internal/utils/BotUtils.kt | 2 +- .../overflow/internal/utils/LoggerUtils.kt | 4 +- .../overflow/internal/utils/ResourceUtils.kt | 10 +-- .../internal/utils/TransformerUtils.kt | 22 +++--- 32 files changed, 159 insertions(+), 156 deletions(-) create mode 100644 overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMusicShare.kt diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/BotFactoryImpl.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/BotFactoryImpl.kt index 3db63993..52355819 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/BotFactoryImpl.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/BotFactoryImpl.kt @@ -7,7 +7,7 @@ import net.mamoe.mirai.auth.BotAuthorization import net.mamoe.mirai.utils.BotConfiguration import top.mrxiaom.overflow.internal.contact.BotWrapper -object BotFactoryImpl : BotFactory { +internal object BotFactoryImpl : BotFactory { internal var internalBot: cn.evolvefield.onebot.client.core.Bot? = null val bot: cn.evolvefield.onebot.client.core.Bot get() = internalBot!! diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/Overflow.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/Overflow.kt index 536a24a6..f47285b1 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/Overflow.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/Overflow.kt @@ -2,7 +2,6 @@ package top.mrxiaom.overflow.internal import cn.evole.onebot.sdk.action.ActionRaw import cn.evole.onebot.sdk.response.contact.FriendInfoResp -import cn.evole.onebot.sdk.response.contact.StrangerInfoResp import cn.evolvefield.onebot.client.config.BotConfig import cn.evolvefield.onebot.client.connection.ConnectFactory import cn.evolvefield.onebot.client.handler.EventBus @@ -45,9 +44,9 @@ import java.io.File import kotlin.coroutines.CoroutineContext import kotlin.system.exitProcess -val Bot.asOnebot: BotWrapper +internal val Bot.asOnebot: BotWrapper get() = this as? BotWrapper ?: throw IllegalStateException("Bot 非 Overflow 实现") -fun ActionRaw.check(failMsg: String): Boolean { +internal fun ActionRaw.check(failMsg: String): Boolean { if (retCode != 0) { Overflow.logger.warning("$failMsg, status=$status, retCode=$retCode, echo=$echo") } diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/BotWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/BotWrapper.kt index 368f9066..6fdc9262 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/BotWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/BotWrapper.kt @@ -32,7 +32,7 @@ import kotlin.coroutines.CoroutineContext import kotlin.coroutines.cancellation.CancellationException @OptIn(MiraiInternalApi::class, LowLevelApi::class) -class BotWrapper private constructor( +internal class BotWrapper private constructor( implBot: Bot, defLoginInfo: LoginInfoResp, botConfiguration: BotConfiguration diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/FriendWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/FriendWrapper.kt index b145480a..fc2808c5 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/FriendWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/FriendWrapper.kt @@ -25,7 +25,7 @@ import top.mrxiaom.overflow.internal.utils.safeMessageIds import top.mrxiaom.overflow.spi.FileService import kotlin.coroutines.CoroutineContext -class FriendWrapper( +internal class FriendWrapper( val botWrapper: BotWrapper, internal var impl: FriendInfoResp, ) : Friend { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/GroupWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/GroupWrapper.kt index 74f54e19..f9a9081f 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/GroupWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/GroupWrapper.kt @@ -42,7 +42,7 @@ import top.mrxiaom.overflow.spi.FileService import kotlin.coroutines.CoroutineContext @OptIn(MiraiInternalApi::class) -class GroupWrapper( +internal class GroupWrapper( val botWrapper: BotWrapper, internal var impl: GroupInfoResp ) : Group, RemoteGroup, Updatable { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/MemberWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/MemberWrapper.kt index c9bccff8..e028c0e1 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/MemberWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/MemberWrapper.kt @@ -30,7 +30,7 @@ import top.mrxiaom.overflow.spi.FileService import kotlin.coroutines.CoroutineContext @OptIn(MiraiInternalApi::class) -class MemberWrapper( +internal class MemberWrapper( val botWrapper: BotWrapper, val groupWrapper: GroupWrapper, internal var impl: GroupMemberInfoResp diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/OtherClientWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/OtherClientWrapper.kt index 5eda300e..5bc5b32a 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/OtherClientWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/OtherClientWrapper.kt @@ -11,7 +11,7 @@ import top.mrxiaom.overflow.internal.message.OnebotMessages import top.mrxiaom.overflow.spi.FileService import kotlin.coroutines.CoroutineContext -class OtherClientWrapper( +internal class OtherClientWrapper( val botWrapper: BotWrapper, override var info: OtherClientInfo ) : OtherClient { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/StrangerWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/StrangerWrapper.kt index 2b62024d..0b69357f 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/StrangerWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/StrangerWrapper.kt @@ -26,7 +26,7 @@ import top.mrxiaom.overflow.internal.utils.safeMessageIds import top.mrxiaom.overflow.spi.FileService import kotlin.coroutines.CoroutineContext -class StrangerWrapper( +internal class StrangerWrapper( val botWrapper: BotWrapper, internal var impl: StrangerInfoResp, ) : Stranger { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/AnnouncementsWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/AnnouncementsWrapper.kt index 797bf6cf..6b3ace9e 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/AnnouncementsWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/AnnouncementsWrapper.kt @@ -12,7 +12,7 @@ import top.mrxiaom.overflow.internal.contact.GroupWrapper import top.mrxiaom.overflow.internal.utils.FastImageInfo import top.mrxiaom.overflow.spi.FileService -class AnnouncementsWrapper( +internal class AnnouncementsWrapper( val impl: GroupWrapper, val list: List ) : Announcements { @@ -75,7 +75,7 @@ class AnnouncementsWrapper( } } -class OnlineAnnouncementWrapper( +internal class OnlineAnnouncementWrapper( override val content: String, override val group: Group, override val senderId: Long, @@ -87,5 +87,5 @@ class OnlineAnnouncementWrapper( override val sender: NormalMember? = group[senderId], ) : OnlineAnnouncement -val AnnouncementImage.file: String +internal val AnnouncementImage.file: String get() = if (url.contains("\n")) url.split("\n")[1] else url diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/EssencesWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/EssencesWrapper.kt index 0894a88f..79594577 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/EssencesWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/EssencesWrapper.kt @@ -13,7 +13,7 @@ import net.mamoe.mirai.utils.MiraiInternalApi import top.mrxiaom.overflow.internal.contact.GroupWrapper import top.mrxiaom.overflow.internal.utils.shareDigest -class EssencesWrapper( +internal class EssencesWrapper( val impl: GroupWrapper, private var list: List ) : Essences { @@ -52,7 +52,7 @@ class EssencesWrapper( companion object { @OptIn(MiraiInternalApi::class) - suspend fun GroupWrapper.fetchEssencesList(page: Int = 0): List { + internal suspend fun GroupWrapper.fetchEssencesList(page: Int = 0): List { return botWrapper.impl.getEssenceMsgList(id, page).data.map { EssenceMessageRecord( this, queryMember(it.senderId), it.senderId, it.senderNick, it.senderTime.toInt(), @@ -71,7 +71,7 @@ class EssencesWrapper( } } } - suspend fun GroupWrapper.fetchEssences(): EssencesWrapper { + internal suspend fun GroupWrapper.fetchEssences(): EssencesWrapper { return EssencesWrapper(this, fetchEssencesList()) } } diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/GroupSettingsWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/GroupSettingsWrapper.kt index e688df83..3dfc092c 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/GroupSettingsWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/GroupSettingsWrapper.kt @@ -7,7 +7,7 @@ import net.mamoe.mirai.contact.checkBotPermission import net.mamoe.mirai.utils.MiraiExperimentalApi import top.mrxiaom.overflow.internal.contact.GroupWrapper -class GroupSettingsWrapper( +internal class GroupSettingsWrapper( val group: GroupWrapper ) : GroupSettings { @Deprecated( diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/MemberActiveWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/MemberActiveWrapper.kt index f3a8dc1b..012a0e0a 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/MemberActiveWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/MemberActiveWrapper.kt @@ -17,7 +17,7 @@ import top.mrxiaom.overflow.internal.contact.MemberWrapper import top.mrxiaom.overflow.internal.utils.httpGet @OptIn(MiraiInternalApi::class) -class MemberActiveWrapper( +internal class MemberActiveWrapper( val member: MemberWrapper ) : MemberActive { val honorsInternal: HashSet = hashSetOf() diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/RemoteFilesWrapper.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/RemoteFilesWrapper.kt index c8365bdf..042da1b8 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/RemoteFilesWrapper.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/contact/data/RemoteFilesWrapper.kt @@ -15,12 +15,12 @@ import top.mrxiaom.overflow.internal.utils.toMiraiFolders import top.mrxiaom.overflow.spi.FileService import java.util.stream.Stream -class RemoteFilesWrapper( +internal class RemoteFilesWrapper( override val contact: GroupWrapper, override val root: FolderWrapper ) : RemoteFiles { companion object { - suspend fun GroupWrapper.fetchFiles(): RemoteFilesWrapper { + internal suspend fun GroupWrapper.fetchFiles(): RemoteFilesWrapper { val data = botWrapper.impl.getGroupRootFiles(id).data val root = FolderWrapper( @@ -33,8 +33,7 @@ class RemoteFilesWrapper( } } - -class FolderWrapper( +internal class FolderWrapper( override val contact: GroupWrapper, override val parent: AbsoluteFolder? = null, override val id: String, @@ -171,7 +170,7 @@ class FolderWrapper( } } -class FileWrapper( +internal class FileWrapper( override val contact: GroupWrapper, override val parent: FolderWrapper?, override val id: String, diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/ContactInfoImpl.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/ContactInfoImpl.kt index b036d219..c68c3f71 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/ContactInfoImpl.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/ContactInfoImpl.kt @@ -12,21 +12,21 @@ import net.mamoe.mirai.data.GroupHonorType import net.mamoe.mirai.data.MemberInfo import net.mamoe.mirai.data.StrangerInfo -class FriendInfoImpl( +internal class FriendInfoImpl( override val uin: Long, override val nick: String, override var remark: String, override val friendGroupId: Int = 0 ) : FriendInfo -class StrangerInfoImpl( +internal class StrangerInfoImpl( override val uin: Long, override val nick: String, override val fromGroup: Long = 0, override val remark: String = "", ): StrangerInfo -class MemberInfoImpl( +internal class MemberInfoImpl( override val honors: Set, override val isOfficialBot: Boolean, override val joinTimestamp: Int, @@ -43,20 +43,20 @@ class MemberInfoImpl( override val uin: Long ): MemberInfo -val FriendInfo.asOnebot: FriendInfoResp +internal val FriendInfo.asOnebot: FriendInfoResp get() = FriendInfoResp(uin, nick, remark) -val StrangerInfo.asOnebot: StrangerInfoResp +internal val StrangerInfo.asOnebot: StrangerInfoResp get() = StrangerInfoResp(uin, nick, "", 0, "", 0, 0, JsonObject().also { if (fromGroup > 0) it.addProperty("add_src_id", fromGroup) }) -val StrangerInfoResp.asMirai: StrangerInfo +internal val StrangerInfoResp.asMirai: StrangerInfo get() = StrangerInfoImpl( uin = userId, nick = nickname, fromGroup = ext?.get("add_src_id")?.asLong ?: 0, ) -val GroupMemberInfoResp.asMirai: MemberInfoImpl +internal val GroupMemberInfoResp.asMirai: MemberInfoImpl get() = MemberInfoImpl(setOf(), false, joinTime, lastSentTime, 0, card, when(role) { "owner" -> MemberPermission.OWNER diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/UserProfileImpl.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/UserProfileImpl.kt index d6b7c9f9..0abf259b 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/UserProfileImpl.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/data/UserProfileImpl.kt @@ -2,7 +2,7 @@ package top.mrxiaom.overflow.internal.data import net.mamoe.mirai.data.UserProfile -class UserProfileImpl( +internal class UserProfileImpl( override val age: Int, override val email: String, override val friendGroupId: Int, diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/friend.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/friend.kt index 6d4d1e06..c8910fef 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/friend.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/friend.kt @@ -5,22 +5,21 @@ import cn.evole.onebot.sdk.event.message.PrivateMessageEvent import cn.evole.onebot.sdk.event.request.FriendAddRequestEvent import cn.evolvefield.onebot.client.handler.EventBus import cn.evolvefield.onebot.client.listener.EventListener -import net.mamoe.mirai.Bot -import net.mamoe.mirai.contact.* +import net.mamoe.mirai.contact.remarkOrNick import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.FriendMessageEvent import net.mamoe.mirai.event.events.NewFriendRequestEvent import net.mamoe.mirai.event.events.StrangerMessageEvent -import net.mamoe.mirai.message.data.MessageChain -import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.utils.MiraiInternalApi import top.mrxiaom.overflow.internal.Overflow import top.mrxiaom.overflow.internal.contact.BotWrapper import top.mrxiaom.overflow.internal.message.OnebotMessages import top.mrxiaom.overflow.internal.message.data.IncomingSource -import top.mrxiaom.overflow.internal.utils.* +import top.mrxiaom.overflow.internal.utils.queryProfile +import top.mrxiaom.overflow.internal.utils.wrapAsFriend +import top.mrxiaom.overflow.internal.utils.wrapAsStranger -fun EventBus.addFriendListeners(bot: BotWrapper) { +internal fun EventBus.addFriendListeners(bot: BotWrapper) { listOf( FriendMessageListener(bot), FriendAddRequestListener(bot), diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/group.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/group.kt index d6858828..c466f2a5 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/group.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/listener/group.kt @@ -9,20 +9,19 @@ import cn.evole.onebot.sdk.event.notice.group.GroupTitleChangeNoticeEvent import cn.evole.onebot.sdk.event.request.GroupAddRequestEvent import cn.evolvefield.onebot.client.handler.EventBus import cn.evolvefield.onebot.client.listener.EventListener -import net.mamoe.mirai.Bot -import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.nameCardOrNick import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* -import net.mamoe.mirai.message.data.* import net.mamoe.mirai.utils.MiraiInternalApi import top.mrxiaom.overflow.internal.Overflow import top.mrxiaom.overflow.internal.contact.BotWrapper import top.mrxiaom.overflow.internal.message.OnebotMessages import top.mrxiaom.overflow.internal.message.data.IncomingSource -import top.mrxiaom.overflow.internal.utils.* +import top.mrxiaom.overflow.internal.utils.group +import top.mrxiaom.overflow.internal.utils.queryProfile +import top.mrxiaom.overflow.internal.utils.wrapAsMember -fun EventBus.addGroupListeners(bot: BotWrapper) { +internal fun EventBus.addGroupListeners(bot: BotWrapper) { listOf( GroupMessageListener(bot), GroupNotifyListener(bot), diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/OnebotMessages.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/OnebotMessages.kt index 7c2b449d..efd01ac6 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/OnebotMessages.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/OnebotMessages.kt @@ -1,8 +1,6 @@ package top.mrxiaom.overflow.internal.message import com.google.gson.JsonParser -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext import kotlinx.serialization.encodeToString import kotlinx.serialization.json.* import net.mamoe.mirai.Bot @@ -11,13 +9,11 @@ import net.mamoe.mirai.message.MessageSerializers import net.mamoe.mirai.message.data.* import net.mamoe.mirai.utils.MiraiExperimentalApi import net.mamoe.mirai.utils.MiraiInternalApi -import net.mamoe.mirai.utils.toUHexString import top.mrxiaom.overflow.internal.asOnebot import top.mrxiaom.overflow.internal.message.data.* import top.mrxiaom.overflow.message.data.ContactRecommend import top.mrxiaom.overflow.message.data.Location import top.mrxiaom.overflow.message.data.Markdown -import java.net.URL /** * Json 数组消息 (Onebot) 与 [MessageChain] (mirai) 的序列化与反序列化 @@ -25,7 +21,7 @@ import java.net.URL * ## 反序列化未完成项 * - 音乐分享 (music/[MusicShare]) */ -object OnebotMessages { +internal object OnebotMessages { internal var appName = "onebot" internal var appVersion = "Unknown" @OptIn(MiraiExperimentalApi::class) @@ -39,7 +35,7 @@ object OnebotMessages { /** * @see serializeToOneBotJsonArray */ - fun serializeToOneBotJson(message: Message): String { + internal fun serializeToOneBotJson(message: Message): String { return Json.encodeToString(serializeToOneBotJsonArray(message)) } @@ -49,7 +45,7 @@ object OnebotMessages { * @param message mirai 消息,不支持转发消息 */ @OptIn(MiraiExperimentalApi::class) - fun serializeToOneBotJsonArray(message: Message): JsonArray { + internal fun serializeToOneBotJsonArray(message: Message): JsonArray { val messageChain = (message as? MessageChain) ?: listOf(message) return buildJsonArray { for (single in messageChain) { @@ -118,7 +114,7 @@ object OnebotMessages { /** * 将转发消息节点转换为可供 Onebot 发送的列表 */ - fun serializeForwardNodes(nodeList: List): List> { + internal fun serializeForwardNodes(nodeList: List): List> { return nodeList.map { mutableMapOf( "type" to "node", @@ -137,7 +133,7 @@ object OnebotMessages { * @param message 消息内容,应为 json 数组消息,若 json 反序列化失败,将会返回为纯文本消息作为 fallback * @param source 消息源 */ - suspend fun deserializeFromOneBot(bot: Bot, message: String, source: MessageSource? = null): MessageChain { + internal suspend fun deserializeFromOneBot(bot: Bot, message: String, source: MessageSource? = null): MessageChain { return kotlin.runCatching { Json.parseToJsonElement(message).jsonArray } .map { deserializeFromOneBotJson(bot, it, source) }.getOrNull() ?: kotlin.run { source?.plus(message) ?: PlainText(message).toMessageChain() @@ -150,7 +146,7 @@ object OnebotMessages { * @see deserializeFromOneBot */ @OptIn(MiraiInternalApi::class, MiraiExperimentalApi::class) - suspend fun deserializeFromOneBotJson(bot: Bot, json: JsonArray, source: MessageSource? = null): MessageChain { + internal suspend fun deserializeFromOneBotJson(bot: Bot, json: JsonArray, source: MessageSource? = null): MessageChain { return buildMessageChain { if (source != null) add(source) @@ -273,60 +269,6 @@ object OnebotMessages { } } - suspend fun deserializeNeteaseMusic(id: String): MusicShare { - return withContext(Dispatchers.IO) { - val conn = URL("https://music.163.com/api/song/detail/?id=$id&ids=[$id]") - .openConnection().also { it.connect() } - val result = conn.inputStream.use { - it.readBytes().toString(Charsets.UTF_8) - } - val songInfo = Json.parseToJsonElement(result).jsonObject["songs"]!!.jsonArray.first().jsonObject - val title = songInfo["name"].string - val singerName = songInfo["artists"]!!.jsonArray.first().jsonObject["name"].string - val previewUrl = songInfo["album"]!!.jsonObject["picUrl"].string - val playUrl = "https://music.163.com/song/media/outer/url?id=$id.mp3" - val jumpUrl = "https://music.163.com/#/song?id=$id" - MusicShare(MusicKind.NeteaseCloudMusic, title, singerName, jumpUrl, previewUrl, playUrl) - } - } - - suspend fun deserializeQQMusic(id: String): MusicShare { - return withContext(Dispatchers.IO) { - val conn = URL("https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0&data={%22comm%22:{%22ct%22:24,%22cv%22:0},%22songinfo%22:{%22method%22:%22get_song_detail_yqq%22,%22param%22:{%22song_type%22:0,%22song_mid%22:%22%22,%22song_id%22:$id},%22module%22:%22music.pf_song_detail_svr%22}}") - .openConnection().also { it.connect() } - val result = conn.inputStream.use { - it.readBytes().toString(Charsets.UTF_8) - } - val songInfo = Json.parseToJsonElement(result).jsonObject["songinfo"]!!.jsonObject.takeIf { it["code"].int != 0 } ?: throw IllegalStateException("QQMusic code = 0") - val data = songInfo["data"]!!.jsonObject - val trackInfo = data["track_info"]!!.jsonObject - val mid = trackInfo["mid"].string - val previewMid = trackInfo["album"]!!.jsonObject["mid"].string - val singerMid = (trackInfo["singer"] as? JsonArray)?.let { - it[0].jsonObject["mid"]?.jsonPrimitive?.contentOrNull - } ?: "" - val title = trackInfo["title"].string - val singerName = trackInfo["singer"]!!.jsonArray.first().jsonObject["name"].string - val vs = (trackInfo["vs"] as? JsonArray)?.let { - it[0].jsonPrimitive.contentOrNull - } ?: "" - val code = "${mid}q;z(&l~sdf2!nK".toByteArray().toUHexString("").substring(0 .. 4).uppercase() - val playUrl = "http://c6.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=$mid&songtype=1&fromtag=50&uin=&code=$code" - val previewUrl = if (vs.isNotEmpty()) { - "http://y.gtimg.cn/music/photo_new/T062R150x150M000$vs}.jpg" - } else if (previewMid.isNotEmpty()) { - "http://y.gtimg.cn/music/photo_new/T002R150x150M000$previewMid.jpg" - } else if (singerMid.isNotEmpty()){ - "http://y.gtimg.cn/music/photo_new/T001R150x150M000$singerMid.jpg" - } else { - "" - } - val jumpUrl = "https://i.y.qq.com/v8/playsong.html?platform=11&appshare=android_qq&appversion=10030010&hosteuin=oKnlNenz7i-s7c**&songmid=${mid}&type=0&appsongtype=1&_wv=1&source=qq&ADTAG=qfshare" - - MusicShare(MusicKind.QQMusic, title, singerName, jumpUrl, previewUrl, playUrl) - } - } - private val Message.messageType: String get() = when(this) { is PlainText -> "text" @@ -371,14 +313,14 @@ object OnebotMessages { get() = (this as? WrappedAudio)?.file ?: "" private val ShortVideo.onebotFile: String get() = (this as? WrappedVideo)?.file ?: "" - private val JsonElement?.string + internal val JsonElement?.string get() = this?.jsonPrimitive?.content ?: "" - private val JsonElement?.int + internal val JsonElement?.int get() = this?.jsonPrimitive?.intOrNull ?: throw IllegalStateException() - private val JsonElement?.long + internal val JsonElement?.long get() = this?.jsonPrimitive?.longOrNull ?: throw IllegalStateException() - fun Message.findForwardMessage(): ForwardMessage? { + internal fun Message.findForwardMessage(): ForwardMessage? { return when(this){ is ForwardMessage -> this is MessageChain -> firstIsInstanceOrNull() diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/MessageSourceImpl.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/MessageSourceImpl.kt index c7ab9b1a..692c80c5 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/MessageSourceImpl.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/MessageSourceImpl.kt @@ -10,7 +10,7 @@ import net.mamoe.mirai.message.data.OfflineMessageSource import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.utils.MiraiInternalApi -class OfflineMessageSourceImpl( +internal class OfflineMessageSourceImpl( override val botId: Long, override val fromId: Long, override val ids: IntArray, @@ -22,8 +22,8 @@ class OfflineMessageSourceImpl( override val kind: MessageSourceKind ) : OfflineMessageSource() -object OutgoingSource { - fun group( +internal object OutgoingSource { + internal fun group( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -44,7 +44,7 @@ object OutgoingSource { override val time: Int = time } } - fun friend( + internal fun friend( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -65,7 +65,7 @@ object OutgoingSource { override val time: Int = time } } - fun temp( + internal fun temp( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -86,7 +86,7 @@ object OutgoingSource { override val time: Int = time } } - fun stranger( + internal fun stranger( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -113,8 +113,8 @@ object OutgoingSource { } } -object IncomingSource { - fun group( +internal object IncomingSource { + internal fun group( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -133,7 +133,7 @@ object IncomingSource { override val time: Int = time } } - fun friend( + internal fun friend( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -156,7 +156,7 @@ object IncomingSource { override val time: Int = time } } - fun temp( + internal fun temp( bot: Bot, ids: IntArray, internalIds: IntArray, @@ -179,7 +179,7 @@ object IncomingSource { override val time: Int = time } } - fun stranger( + internal fun stranger( bot: Bot, ids: IntArray, internalIds: IntArray, diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/UnknownMessage.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/UnknownMessage.kt index 9efde8ae..8a428f69 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/UnknownMessage.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/UnknownMessage.kt @@ -13,7 +13,7 @@ import java.util.* private fun currentTime() = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date()) @Serializable -data class UnknownMessage( +internal data class UnknownMessage( val type: String, val data: JsonObject ) : MessageContent { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedAudio.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedAudio.kt index 62a1d163..9dadd3a6 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedAudio.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedAudio.kt @@ -7,7 +7,7 @@ import top.mrxiaom.overflow.internal.utils.base64Length import top.mrxiaom.overflow.internal.utils.lengthToString @Serializable -data class WrappedAudio( +internal data class WrappedAudio( override val urlForDownload: String, override val length: Long, ): OnlineAudio, OfflineAudio { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedFileMessage.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedFileMessage.kt index a14cb30b..d6e98055 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedFileMessage.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedFileMessage.kt @@ -6,7 +6,7 @@ import net.mamoe.mirai.contact.file.AbsoluteFile import net.mamoe.mirai.message.data.FileMessage @Serializable -data class WrappedFileMessage( +internal data class WrappedFileMessage( override val id: String, override val internalId: Int, override val name: String, diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedImageProtocol.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedImageProtocol.kt index 86831529..c3b1ee96 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedImageProtocol.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedImageProtocol.kt @@ -40,7 +40,7 @@ internal class WrappedImageProtocol : InternalImageProtocol { } @Serializable @MiraiExperimentalApi -data class WrappedImage( +internal data class WrappedImage( val url: String, override val imageType: ImageType, override val size: Long, diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMarketFace.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMarketFace.kt index 4613cc97..7a9191fd 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMarketFace.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMarketFace.kt @@ -1,10 +1,11 @@ package top.mrxiaom.overflow.internal.message.data +import kotlinx.serialization.SerialName import net.mamoe.mirai.message.data.MarketFace import net.mamoe.mirai.utils.MiraiExperimentalApi @MiraiExperimentalApi -class WrappedMarketFace( +internal data class WrappedMarketFace( val emojiId: String, override val name: String, override val id: Int = 0 diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMusicShare.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMusicShare.kt new file mode 100644 index 00000000..b5f82ba7 --- /dev/null +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedMusicShare.kt @@ -0,0 +1,66 @@ +package top.mrxiaom.overflow.internal.message.data + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.json.* +import net.mamoe.mirai.message.data.MusicKind +import net.mamoe.mirai.message.data.MusicShare +import net.mamoe.mirai.utils.toUHexString +import top.mrxiaom.overflow.internal.message.OnebotMessages.int +import top.mrxiaom.overflow.internal.message.OnebotMessages.string +import java.net.URL + + +internal suspend fun deserializeNeteaseMusic(id: String): MusicShare { + return withContext(Dispatchers.IO) { + val conn = URL("https://music.163.com/api/song/detail/?id=$id&ids=[$id]") + .openConnection().also { it.connect() } + val result = conn.inputStream.use { + it.readBytes().toString(Charsets.UTF_8) + } + val songInfo = Json.parseToJsonElement(result).jsonObject["songs"]!!.jsonArray.first().jsonObject + val title = songInfo["name"].string + val singerName = songInfo["artists"]!!.jsonArray.first().jsonObject["name"].string + val previewUrl = songInfo["album"]!!.jsonObject["picUrl"].string + val playUrl = "https://music.163.com/song/media/outer/url?id=$id.mp3" + val jumpUrl = "https://music.163.com/#/song?id=$id" + MusicShare(MusicKind.NeteaseCloudMusic, title, singerName, jumpUrl, previewUrl, playUrl) + } +} + +internal suspend fun deserializeQQMusic(id: String): MusicShare { + return withContext(Dispatchers.IO) { + val conn = URL("https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0&data={%22comm%22:{%22ct%22:24,%22cv%22:0},%22songinfo%22:{%22method%22:%22get_song_detail_yqq%22,%22param%22:{%22song_type%22:0,%22song_mid%22:%22%22,%22song_id%22:$id},%22module%22:%22music.pf_song_detail_svr%22}}") + .openConnection().also { it.connect() } + val result = conn.inputStream.use { + it.readBytes().toString(Charsets.UTF_8) + } + val songInfo = Json.parseToJsonElement(result).jsonObject["songinfo"]!!.jsonObject.takeIf { it["code"].int != 0 } ?: throw IllegalStateException("QQMusic code = 0") + val data = songInfo["data"]!!.jsonObject + val trackInfo = data["track_info"]!!.jsonObject + val mid = trackInfo["mid"].string + val previewMid = trackInfo["album"]!!.jsonObject["mid"].string + val singerMid = (trackInfo["singer"] as? JsonArray)?.let { + it[0].jsonObject["mid"]?.jsonPrimitive?.contentOrNull + } ?: "" + val title = trackInfo["title"].string + val singerName = trackInfo["singer"]!!.jsonArray.first().jsonObject["name"].string + val vs = (trackInfo["vs"] as? JsonArray)?.let { + it[0].jsonPrimitive.contentOrNull + } ?: "" + val code = "${mid}q;z(&l~sdf2!nK".toByteArray().toUHexString("").substring(0 .. 4).uppercase() + val playUrl = "http://c6.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=$mid&songtype=1&fromtag=50&uin=&code=$code" + val previewUrl = if (vs.isNotEmpty()) { + "http://y.gtimg.cn/music/photo_new/T062R150x150M000$vs}.jpg" + } else if (previewMid.isNotEmpty()) { + "http://y.gtimg.cn/music/photo_new/T002R150x150M000$previewMid.jpg" + } else if (singerMid.isNotEmpty()){ + "http://y.gtimg.cn/music/photo_new/T001R150x150M000$singerMid.jpg" + } else { + "" + } + val jumpUrl = "https://i.y.qq.com/v8/playsong.html?platform=11&appshare=android_qq&appversion=10030010&hosteuin=oKnlNenz7i-s7c**&songmid=${mid}&type=0&appsongtype=1&_wv=1&source=qq&ADTAG=qfshare" + + MusicShare(MusicKind.QQMusic, title, singerName, jumpUrl, previewUrl, playUrl) + } +} diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedVideo.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedVideo.kt index 47ae6e0d..49da0b52 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedVideo.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/message/data/WrappedVideo.kt @@ -8,7 +8,7 @@ import net.mamoe.mirai.utils.safeCast import top.mrxiaom.overflow.internal.utils.base64Length @Serializable -data class WrappedVideo( +internal data class WrappedVideo( val file: String ) : OnlineShortVideo { override val fileFormat: String = "mp4" diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/BuiltInCommands.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/BuiltInCommands.kt index b0652566..825f424f 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/BuiltInCommands.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/BuiltInCommands.kt @@ -1,4 +1,4 @@ -@file:OptIn(ConsoleFrontEndImplementation::class, ConsoleExperimentalApi::class) +@file:OptIn(ConsoleFrontEndImplementation::class, ConsoleExperimentalApi::class, MiraiExperimentalApi::class) @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") package top.mrxiaom.overflow.internal.plugin @@ -29,10 +29,9 @@ import java.text.SimpleDateFormat import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.Date -import kotlin.time.Duration.Companion.milliseconds -object BuiltInCommands { - public object StatusCommand : SimpleCommand( +internal object BuiltInCommands { + object StatusCommand : SimpleCommand( ConsoleCommandOwner, "status", "states", "状态", description = "获取 Mirai Console 运行状态" ), Command, BuiltInCommand { @@ -85,11 +84,11 @@ object BuiltInCommands { val max: Long, ) - fun dateTime(timestamp: Long): String { + private fun dateTime(timestamp: Long): String { return SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date(timestamp)) } - fun time(time: Long): String = buildString { + private fun time(time: Long): String = buildString { val seconds = time / 1000 val minutes = (seconds / 60) % 60 val hours = (seconds / 60 / 60) % 24 @@ -99,7 +98,6 @@ object BuiltInCommands { append(minutes).append("分") } - @OptIn(MiraiExperimentalApi::class) @Handler suspend fun CommandSender.handle() { sendAnsiMessage { @@ -228,7 +226,7 @@ object BuiltInCommands { } } - private fun AnsiMessageBuilder.renderMemoryUsage(usage: MUsage) = arrayOf( + private fun renderMemoryUsage(usage: MUsage) = arrayOf( renderMemoryUsageNumber(usage.committed), renderMemoryUsageNumber(usage.init), renderMemoryUsageNumber(usage.used), diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/OverflowCoreAsPlugin.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/OverflowCoreAsPlugin.kt index a4dfe04d..dfe870ef 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/OverflowCoreAsPlugin.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/plugin/OverflowCoreAsPlugin.kt @@ -42,7 +42,7 @@ internal object OverflowCoreAsPlugin : Plugin, CommandOwner { return ConsoleCommandOwner.permissionId(name) } - fun net.mamoe.mirai.console.internal.extension.AbstractConcurrentComponentStorage.contributePostStartupExtension( + private fun net.mamoe.mirai.console.internal.extension.AbstractConcurrentComponentStorage.contributePostStartupExtension( instance: PostStartupExtension ): Unit = contribute(PostStartupExtension, this@OverflowCoreAsPlugin, lazyInstance = { instance }) @@ -134,7 +134,7 @@ internal object OverflowCoreAsPlugin : Plugin, CommandOwner { } @Suppress("DEPRECATION_ERROR") - fun onPostStartup() { + private fun onPostStartup() { net.mamoe.mirai.internal.spi.EncryptService.factory?.also { Overflow.logger.apply { warning("-------------------------------------------") diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/BotUtils.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/BotUtils.kt index 0af073ac..3ef5a488 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/BotUtils.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/BotUtils.kt @@ -24,7 +24,7 @@ internal val defaultJson: Json = Json { ignoreUnknownKeys = true } @Serializable -data class DigestShare( +internal data class DigestShare( @SerialName("share_key") val shareKey: String = "" ) diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/LoggerUtils.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/LoggerUtils.kt index bb6cc56a..98d20e91 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/LoggerUtils.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/LoggerUtils.kt @@ -36,7 +36,7 @@ private val doNothing: (priority: SimpleLogger.LogPriority, message: String?, e: * * @see PlatformLogger 查看格式信息 */ -public class LoggerInFolder @JvmOverloads constructor( +internal class LoggerInFolder @JvmOverloads constructor( requester: KClass<*>, identity: String, private val directory: File = File(identity), @@ -82,7 +82,7 @@ public class LoggerInFolder @JvmOverloads constructor( * @see PlatformLogger 查看格式信息 */ @OptIn(MiraiInternalApi::class) -class WithFileLogger( +internal class WithFileLogger( val logger: MiraiLogger, file: File ) : MiraiLogger, PlatformLogger(logger.identity, { file.appendText(it + "\n") }, false) { diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/ResourceUtils.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/ResourceUtils.kt index e5943f71..2c2db1f1 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/ResourceUtils.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/ResourceUtils.kt @@ -4,15 +4,15 @@ import net.mamoe.mirai.utils.ExternalResource import java.io.* import java.util.* -fun ExternalResource.toBase64File(): String { +internal fun ExternalResource.toBase64File(): String { return inputStream().use { "base64://" + Base64.getEncoder().encodeToString(it.readBytes()) } } -fun base64Length(s: String): Long { +internal fun base64Length(s: String): Long { return s.length.toLong() - (s.length.toLong() / 8L) * 2L } -fun lengthToString(len: Long): String { +internal fun lengthToString(len: Long): String { var value = len.toDouble() var unit = "bytes" for (u in arrayOf("KB", "MB")) { @@ -25,10 +25,10 @@ fun lengthToString(len: Long): String { /** * 快速获取图片的大小 * - * @see https://www.cnblogs.com/xiaona/p/13869504.html + * [cnblogs](https://www.cnblogs.com/xiaona/p/13869504.html) * @author Mr.Er */ -class FastImageInfo private constructor( +internal class FastImageInfo private constructor( val height: Int, val width: Int, val mimeType: String diff --git a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/TransformerUtils.kt b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/TransformerUtils.kt index 7415a336..f41d6e98 100644 --- a/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/TransformerUtils.kt +++ b/overflow-core/src/main/kotlin/top/mrxiaom/overflow/internal/utils/TransformerUtils.kt @@ -33,18 +33,18 @@ internal inline fun ContactList.update( delegate.addAll(list.filterNot { delegate.any { old -> old.id == it.id } }) } -fun GroupMemberInfoResp.wrapAsMember(group: Group): MemberWrapper { +internal fun GroupMemberInfoResp.wrapAsMember(group: Group): MemberWrapper { return (group as GroupWrapper).updateMember(this) } -fun GroupMessageEvent.GroupSender.wrapAsMember(group: Group): MemberWrapper { +internal fun GroupMessageEvent.GroupSender.wrapAsMember(group: Group): MemberWrapper { return GroupMemberInfoResp().also { it.groupId = group.id it.userId = userId.toLong() it.nickname = nickname it.card = card ?: "" it.sex = sex ?: "" - it.age = age ?: 0 + it.age = age it.area = area ?: "" it.level = level?.toIntOrNull() ?: 0 it.role = role ?: "member" @@ -52,7 +52,7 @@ fun GroupMessageEvent.GroupSender.wrapAsMember(group: Group): MemberWrapper { }.wrapAsMember(group) } -suspend fun BotWrapper.group(groupId: Long): GroupWrapper { +internal suspend fun BotWrapper.group(groupId: Long): GroupWrapper { return getGroup(groupId) as? GroupWrapper ?: kotlin.run { val data = impl.getGroupInfo(groupId, false).data ?: throw IllegalStateException("无法取得群信息") updateGroup(GroupWrapper(this, data)) @@ -60,7 +60,7 @@ suspend fun BotWrapper.group(groupId: Long): GroupWrapper { } -fun PrivateMessageEvent.PrivateSender.wrapAsFriend(bot: BotWrapper): FriendWrapper { +internal fun PrivateMessageEvent.PrivateSender.wrapAsFriend(bot: BotWrapper): FriendWrapper { return bot.updateFriend(FriendWrapper(bot, FriendInfoResp().also { it.userId = userId it.nickname = nickname @@ -68,11 +68,11 @@ fun PrivateMessageEvent.PrivateSender.wrapAsFriend(bot: BotWrapper): FriendWrapp })) } -fun StrangerInfoResp.wrapAsStranger(bot: BotWrapper): StrangerWrapper { +internal fun StrangerInfoResp.wrapAsStranger(bot: BotWrapper): StrangerWrapper { return bot.updateStranger(StrangerWrapper(bot, this)) } -fun PrivateMessageEvent.PrivateSender.wrapAsStranger(bot: BotWrapper): StrangerWrapper { +internal fun PrivateMessageEvent.PrivateSender.wrapAsStranger(bot: BotWrapper): StrangerWrapper { return StrangerInfoResp( userId, nickname, @@ -85,15 +85,15 @@ fun PrivateMessageEvent.PrivateSender.wrapAsStranger(bot: BotWrapper): StrangerW ).wrapAsStranger(bot) } -fun ClientsResp.Clients.wrapAsOtherClientInfo(): OtherClientInfo { +internal fun ClientsResp.Clients.wrapAsOtherClientInfo(): OtherClientInfo { val platform = Platform.getByTerminalId(loginPlatform.toInt()) return OtherClientInfo(appId.toInt(), platform, deviceName, deviceKind) } -val MsgId?.safeMessageIds: IntArray +internal val MsgId?.safeMessageIds: IntArray get() = this?.messageId?.run { intArrayOf(this) } ?: intArrayOf() -fun List.toMiraiFiles(group: GroupWrapper, parent: FolderWrapper? = null): List { +internal fun List.toMiraiFiles(group: GroupWrapper, parent: FolderWrapper? = null): List { return map { val md5 = it.md5?.hexToBytes() ?: ByteArray(16) val sha1 = it.sha1?.hexToBytes() ?: ByteArray(16) @@ -102,7 +102,7 @@ fun List.toMiraiFiles(group: GroupWrapper, parent: FolderW ) } } -fun List.toMiraiFolders(group: GroupWrapper, parent: FolderWrapper? = null): List { +internal fun List.toMiraiFolders(group: GroupWrapper, parent: FolderWrapper? = null): List { return map { FolderWrapper(group, parent, it.folderId, it.folderName, it.createTime, it.createTime, it.creator, it.totalFileCount