Skip to content

Commit

Permalink
allow developers to get onebot data of users
Browse files Browse the repository at this point in the history
  • Loading branch information
MrXiaoM committed Sep 2, 2024
1 parent ca4d1ce commit bff315a
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package top.mrxiaom.overflow.contact

interface RemoteUser {
val onebotData: String
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package top.mrxiaom.overflow.internal.contact

import cn.evolvefield.onebot.sdk.response.contact.LoginInfoResp
import cn.evolvefield.onebot.client.core.Bot
import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.*
import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
import net.mamoe.mirai.LowLevelApi
Expand All @@ -18,6 +19,7 @@ import net.mamoe.mirai.supervisorJob
import net.mamoe.mirai.utils.*
import org.java_websocket.framing.CloseFrame
import top.mrxiaom.overflow.contact.RemoteBot
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.contact.Updatable
import top.mrxiaom.overflow.internal.Overflow
import top.mrxiaom.overflow.internal.contact.data.FallbackFriendGroups
Expand All @@ -37,7 +39,7 @@ internal class BotWrapper private constructor(
private var implBot: Bot,
defLoginInfo: LoginInfoResp,
override val configuration: BotConfiguration
) : QQAndroidBot(), RemoteBot, Updatable, CoroutineScope {
) : QQAndroidBot(), RemoteUser, RemoteBot, Updatable, CoroutineScope {
val impl: Bot
get() = implBot
override val implGetter: () -> Bot = { impl }
Expand Down Expand Up @@ -106,6 +108,9 @@ internal class BotWrapper private constructor(
if (data.message.isEmpty()) return null
return OnebotMessages.toMiraiMessage(data.isJsonMessage, data.message, this)
}

override val onebotData: String
get() = gson.toJson(loginInfo)
override val id: Long
get() = loginInfo.userId

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package top.mrxiaom.overflow.internal.contact

import cn.evolvefield.onebot.sdk.response.contact.FriendInfoResp
import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.CoroutineName
import net.mamoe.mirai.contact.Friend
import net.mamoe.mirai.contact.friendgroup.FriendGroup
Expand All @@ -17,6 +18,7 @@ import net.mamoe.mirai.utils.MiraiInternalApi
import net.mamoe.mirai.utils.currentTimeSeconds
import top.mrxiaom.overflow.Overflow
import top.mrxiaom.overflow.OverflowAPI
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.internal.message.OnebotMessages
import top.mrxiaom.overflow.internal.message.OnebotMessages.findForwardMessage
import top.mrxiaom.overflow.internal.message.data.OutgoingSource
Expand All @@ -28,7 +30,9 @@ import kotlin.coroutines.CoroutineContext
internal class FriendWrapper(
override val bot: BotWrapper,
internal var impl: FriendInfoResp,
) : Friend {
) : Friend, RemoteUser {
override val onebotData: String
get() = gson.toJson(impl)
override val id: Long = impl.userId
override val nick: String = impl.nickname
override val coroutineContext: CoroutineContext = CoroutineName("(Bot/${bot.id})Friend/$id")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package top.mrxiaom.overflow.internal.contact
import cn.evolvefield.onebot.sdk.entity.Anonymous
import cn.evolvefield.onebot.sdk.response.group.GroupInfoResp
import cn.evolvefield.onebot.sdk.response.group.GroupMemberInfoResp
import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.runBlocking
import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
Expand All @@ -22,6 +23,7 @@ import net.mamoe.mirai.utils.MiraiInternalApi
import net.mamoe.mirai.utils.currentTimeSeconds
import top.mrxiaom.overflow.Overflow
import top.mrxiaom.overflow.contact.RemoteGroup
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.contact.Updatable
import top.mrxiaom.overflow.internal.contact.data.*
import top.mrxiaom.overflow.internal.contact.data.AnnouncementsWrapper.Companion.fetchAnnouncements
Expand All @@ -41,7 +43,9 @@ import kotlin.coroutines.CoroutineContext
internal class GroupWrapper(
override val bot: BotWrapper,
internal var impl: GroupInfoResp
) : Group, RemoteGroup, Updatable {
) : Group, RemoteGroup, RemoteUser, Updatable {
override val onebotData: String
get() = gson.toJson(impl)
private var membersInternal: ContactList<MemberWrapper>? = null
private var anonymousInternal: HashMap<String, AnonymousMemberWrapper> = hashMapOf()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package top.mrxiaom.overflow.internal.contact

import cn.evolvefield.onebot.sdk.entity.Anonymous
import cn.evolvefield.onebot.sdk.response.group.GroupMemberInfoResp
import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.launch
import net.mamoe.mirai.contact.*
Expand All @@ -19,6 +20,7 @@ import net.mamoe.mirai.utils.ExternalResource
import net.mamoe.mirai.utils.MiraiInternalApi
import net.mamoe.mirai.utils.currentTimeSeconds
import top.mrxiaom.overflow.Overflow
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.contact.Updatable
import top.mrxiaom.overflow.internal.check
import top.mrxiaom.overflow.internal.contact.data.EmptyMemberActive
Expand All @@ -36,7 +38,9 @@ import kotlin.coroutines.CoroutineContext
internal class MemberWrapper(
override val group: GroupWrapper,
internal var impl: GroupMemberInfoResp
) : NormalMember, Updatable {
) : NormalMember, RemoteUser, Updatable {
override val onebotData: String
get() = gson.toJson(impl)
override val bot: BotWrapper = group.bot
val data: GroupMemberInfoResp
get() = impl
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
package top.mrxiaom.overflow.internal.contact

import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.CoroutineName
import net.mamoe.mirai.contact.OtherClient
import net.mamoe.mirai.contact.OtherClientInfo
import net.mamoe.mirai.message.data.ShortVideo
import net.mamoe.mirai.utils.ExternalResource
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.internal.message.OnebotMessages
import top.mrxiaom.overflow.spi.FileService
import kotlin.coroutines.CoroutineContext

internal class OtherClientWrapper(
override val bot: BotWrapper,
override var info: OtherClientInfo
) : OtherClient {
) : OtherClient, RemoteUser {
override val onebotData: String
get() = gson.toJson(info)
override val coroutineContext: CoroutineContext = CoroutineName("(Bot/${bot.id})OtherClient/${info.deviceKind}")

override suspend fun uploadShortVideo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
package top.mrxiaom.overflow.internal.contact

import cn.evolvefield.onebot.sdk.response.contact.StrangerInfoResp
import cn.evolvefield.onebot.sdk.util.gson
import kotlinx.coroutines.CoroutineName
import net.mamoe.mirai.contact.Stranger
import net.mamoe.mirai.event.broadcast
Expand All @@ -18,6 +19,7 @@ import net.mamoe.mirai.utils.MiraiInternalApi
import net.mamoe.mirai.utils.currentTimeSeconds
import top.mrxiaom.overflow.Overflow
import top.mrxiaom.overflow.OverflowAPI
import top.mrxiaom.overflow.contact.RemoteUser
import top.mrxiaom.overflow.internal.message.OnebotMessages
import top.mrxiaom.overflow.internal.message.OnebotMessages.findForwardMessage
import top.mrxiaom.overflow.internal.message.data.OutgoingSource
Expand All @@ -29,7 +31,9 @@ import kotlin.coroutines.CoroutineContext
internal class StrangerWrapper(
override val bot: BotWrapper,
internal var impl: StrangerInfoResp,
) : Stranger {
) : Stranger, RemoteUser {
override val onebotData: String
get() = gson.toJson(impl)
override val id: Long = impl.userId
override val nick: String = impl.nickname
override val coroutineContext: CoroutineContext = CoroutineName("(Bot/${bot.id})Stranger/$id")
Expand Down

0 comments on commit bff315a

Please sign in to comment.