Skip to content

Commit df03f98

Browse files
authored
Merge pull request #17 from lz1998/master
update mirai
2 parents 06ecb94 + cdcb9de commit df03f98

File tree

11 files changed

+311
-275
lines changed

11 files changed

+311
-275
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,6 @@ src/main/java/dto/
4444
.DS_Store
4545

4646

47-
device/
47+
device/
48+
.wakatime-project
49+
bots.json

build.gradle.kts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ plugins {
2828
}
2929

3030
group = "net.lz1998"
31-
version = "0.0.11"
31+
version = "0.0.14"
3232
java.sourceCompatibility = JavaVersion.VERSION_1_8
3333

3434
configurations {
@@ -39,8 +39,8 @@ configurations {
3939

4040
repositories {
4141
mavenLocal()
42-
maven(url = "http://maven.aliyun.com/nexus/content/groups/public/")
43-
maven(url = "http://maven.aliyun.com/nexus/content/repositories/jcenter")
42+
// maven(url = "http://maven.aliyun.com/nexus/content/groups/public/")
43+
// maven(url = "http://maven.aliyun.com/nexus/content/repositories/jcenter")
4444
mavenCentral()
4545
jcenter()
4646
// maven(url = "http://repo.spring.io/plugins-release")
@@ -50,7 +50,17 @@ repositories {
5050
dependencies {
5151
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0-RC2")
5252
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.0-RC")
53-
implementation("net.mamoe:mirai-core-qqandroid:1.3.2")
53+
// api("net.mamoe:mirai-core:2.0-M1-1")
54+
val miraiVersion="2.0-RC-dev-9"
55+
implementation("net.mamoe", "mirai-core-jvm", miraiVersion) {
56+
exclude("net.mamoe", "mirai-core-api")
57+
exclude("net.mamoe", "mirai-core-utils")
58+
}
59+
implementation("net.mamoe", "mirai-core-api-jvm", miraiVersion) {
60+
exclude("net.mamoe", "mirai-core-utils")
61+
}
62+
implementation("net.mamoe", "mirai-core-utils-jvm", miraiVersion)
63+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm:1.0.1")
5464
implementation("com.squareup.okhttp3:okhttp:4.8.0")
5565
// implementation("com.google.protobuf:protobuf-javalite:3.8.0")
5666

onebot_idl

src/main/kotlin/net/lz1998/mirai/entity/WebSocketBotClient.kt

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
11
package net.lz1998.mirai.entity
22

33
import kotlinx.coroutines.*
4+
import kotlinx.serialization.json.Json
45
import net.lz1998.mirai.alias.BFrame
56
import net.lz1998.mirai.alias.BFrameType
67
import net.lz1998.mirai.ext.*
78
import net.lz1998.mirai.service.MyLoginSolver
89
import net.lz1998.mirai.utils.*
910
import net.mamoe.mirai.Bot
10-
import net.mamoe.mirai.alsoLogin
11-
import net.mamoe.mirai.event.events.BotEvent
12-
import net.mamoe.mirai.event.events.BotInvitedJoinGroupRequestEvent
13-
import net.mamoe.mirai.event.events.MemberJoinRequestEvent
14-
import net.mamoe.mirai.event.events.NewFriendRequestEvent
15-
import net.mamoe.mirai.event.subscribeAlways
16-
import net.mamoe.mirai.message.MessageEvent
11+
import net.mamoe.mirai.BotFactory
12+
import net.mamoe.mirai.event.events.*
1713
import okhttp3.*
18-
import okhttp3.internal.ws.WebSocketProtocol
1914
import okio.ByteString
2015
import okio.ByteString.Companion.toByteString
21-
import java.lang.Thread.sleep
16+
import java.io.File
2217
import java.util.concurrent.TimeUnit
2318

19+
var json: Json = runCatching {
20+
Json {
21+
isLenient = true
22+
ignoreUnknownKeys = true
23+
prettyPrint = true
24+
}
25+
}.getOrElse { Json {} }
26+
2427
class WebsocketBotClient(override var botId: Long, override var password: String, wsUrl: String) : RemoteBot {
2528
override lateinit var bot: Bot
2629

2730

2831
private var lastWsConnectTime: Long = 0
2932
var connecting: Boolean = false
3033

31-
private var wsClient: WebSocket? = null
34+
var wsClient: WebSocket? = null
3235
private var httpClient: OkHttpClient = OkHttpClient.Builder()
3336
.callTimeout(20, TimeUnit.SECONDS)
3437
.connectTimeout(20, TimeUnit.SECONDS)
@@ -109,28 +112,39 @@ class WebsocketBotClient(override var botId: Long, override var password: String
109112
}
110113

111114
override suspend fun initBot() {
112-
wsClient = httpClient.newWebSocket(wsRequest, wsListener)
113-
bot = Bot(botId, password) {
114-
fileStrBasedDeviceInfo("device/${botId}.json")
115+
val myDeviceInfo = File("device/bot-${botId}.json").loadAsMyDeviceInfo(json)
116+
bot = BotFactory.newBot(botId, password) {
117+
protocol = myDeviceInfo.protocol
118+
deviceInfo = { myDeviceInfo.generateDeviceInfoData() }
115119
loginSolver = MyLoginSolver
116-
// noNetworkLog()
117-
}.alsoLogin()
118-
bot.subscribeAlways<BotEvent> {
120+
}
121+
bot.logger.info("DeviceInfo: ${json.encodeToString(MyDeviceInfo.serializer(), myDeviceInfo)}")
122+
123+
bot.eventChannel.subscribeAlways<BotEvent> {
119124
onBotEvent(this)
120125
}
121-
bot.subscribeAlways<MessageEvent> {
126+
bot.eventChannel.subscribeAlways<net.mamoe.mirai.event.events.MessageEvent> {
122127
val messageSource = this.source // 撤回消息用
123-
bot.messageSourceLru.put(messageSource.id, messageSource)
128+
val messageId = if (messageSource.ids.isNotEmpty()) messageSource.ids[0] else 0
129+
bot.messageSourceLru.put(messageId, messageSource)
124130
}
125-
bot.subscribeAlways<MemberJoinRequestEvent> {
131+
bot.eventChannel.subscribeAlways<MemberJoinRequestEvent> {
126132
bot.groupRequestLru.put(it.eventId, it)
127133
}
128-
bot.subscribeAlways<BotInvitedJoinGroupRequestEvent> {
134+
bot.eventChannel.subscribeAlways<BotInvitedJoinGroupRequestEvent> {
129135
bot.botInvitedGroupRequestLru.put(it.eventId, it)
130136
}
131-
bot.subscribeAlways<NewFriendRequestEvent> {
137+
bot.eventChannel.subscribeAlways<NewFriendRequestEvent> {
132138
bot.friendRequestLru.put(it.eventId, it)
133139
}
140+
bot.eventChannel.subscribeAlways<BotOnlineEvent> {
141+
if (wsClient == null) {
142+
wsClient = httpClient.newWebSocket(wsRequest, wsListener)
143+
}
144+
}
145+
GlobalScope.launch {
146+
bot.login()
147+
}
134148
}
135149

136150
override suspend fun login() {

0 commit comments

Comments
 (0)