Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
f9cf47a1
Commit
f9cf47a1
authored
Jan 31, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bot factory
parent
0c90b39c
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
108 additions
and
51 deletions
+108
-51
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
...androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
+18
-0
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
...roidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
+1
-1
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/Context.kt
...oidMain/kotlin/net/mamoe/mirai/qqandroid/utils/Context.kt
+0
-3
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt
...commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt
+8
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
...mmonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt
...moe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt
+3
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
...tlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
+0
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/DeviceInfo.kt
...Main/kotlin/net/mamoe/mirai/qqandroid/utils/DeviceInfo.kt
+1
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
...otlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
+2
-0
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
...src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
+30
-0
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
.../jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
+5
-2
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
...otlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
+2
-5
mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/TIMPC.kt
...impc/src/commonMain/kotlin/net.mamoe.mirai.timpc/TIMPC.kt
+9
-1
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.kt
...e/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.kt
+3
-0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotAccount.kt
...-core/src/commonMain/kotlin/net.mamoe.mirai/BotAccount.kt
+3
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt
...-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt
+6
-15
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Context.kt
...re/src/commonMain/kotlin/net.mamoe.mirai/utils/Context.kt
+1
-1
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactoryJvm.kt
...-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactoryJvm.kt
+10
-19
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/Context.kt
...-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/Context.kt
+5
-0
No files found.
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
0 → 100644
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.BotFactory
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.MiraiInternalAPI
/**
* QQ for Android
*/
actual
object
QQAndroid
:
BotFactory
{
@UseExperimental
(
MiraiInternalAPI
::
class
)
override
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
):
Bot
{
return
QQAndroidBot
(
context
,
BotAccount
(
qq
,
password
),
configuration
)
}
}
\ No newline at end of file
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.qqandroid.utils.Context
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
internal
actual
class
QQAndroidBot
actual
constructor
(
context
:
Context
,
...
...
mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/Context.kt
deleted
100644 → 0
View file @
0c90b39c
package
net.mamoe.mirai.qqandroid.utils
actual
typealias
Context
=
android
.
content
.
Context
\ No newline at end of file
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt
0 → 100644
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid
import
net.mamoe.mirai.BotFactory
/**
* QQ for Android
*/
expect
object
QQAndroid
:
BotFactory
\ No newline at end of file
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
View file @
f9cf47a1
...
...
@@ -8,9 +8,9 @@ import net.mamoe.mirai.data.ImageLink
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler
import
net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.utils.Context
import
net.mamoe.mirai.qqandroid.utils.ImageIdQQA
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.LockFreeLinkedList
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
kotlin.coroutines.CoroutineContext
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt
View file @
f9cf47a1
...
...
@@ -370,7 +370,9 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
}
override
fun
dispose
(
cause
:
Throwable
?)
{
channel
.
close
()
if
(
::
channel
.
isInitialized
)
{
channel
.
close
()
}
super
.
dispose
(
cause
)
}
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt
View file @
f9cf47a1
...
...
@@ -11,7 +11,6 @@ import net.mamoe.mirai.qqandroid.QQAndroidBot
import
net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketLogger
import
net.mamoe.mirai.qqandroid.network.protocol.packet.Tlv
import
net.mamoe.mirai.qqandroid.utils.Context
import
net.mamoe.mirai.qqandroid.utils.DeviceInfo
import
net.mamoe.mirai.qqandroid.utils.NetworkType
import
net.mamoe.mirai.qqandroid.utils.SystemDeviceInfo
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/DeviceInfo.kt
View file @
f9cf47a1
...
...
@@ -3,6 +3,7 @@ package net.mamoe.mirai.qqandroid.utils
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
net.mamoe.mirai.qqandroid.io.serialization.ProtoBufWithNullableSupport
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.cryptor.contentToString
import
net.mamoe.mirai.utils.getValue
import
net.mamoe.mirai.utils.unsafeWeakRef
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid.utils
import
net.mamoe.mirai.utils.Context
/**
* System default values
*/
...
...
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt
0 → 100644
View file @
f9cf47a1
@
file
:
Suppress
(
"FunctionName"
)
package
net.mamoe.mirai.qqandroid
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.BotFactory
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.MiraiInternalAPI
/**
* QQ for Android
*/
@UseExperimental
(
MiraiInternalAPI
::
class
)
actual
object
QQAndroid
:
BotFactory
{
override
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
):
Bot
{
return
QQAndroidBot
(
context
,
BotAccount
(
qq
,
password
),
configuration
)
}
fun
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
=
QQAndroidBot
(
BotAccount
(
qq
,
password
),
configuration
)
}
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
inline
fun
QQAndroid
.
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
this
.
Bot
(
qq
,
password
,
BotConfiguration
().
apply
(
configuration
))
\ No newline at end of file
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid
import
net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.qqandroid.utils.Context
import
net.mamoe.mirai.qqandroid.utils.ContextImpl
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.ContextImpl
import
net.mamoe.mirai.utils.MiraiInternalAPI
@UseExperimental
(
MiraiInternalAPI
::
class
)
@Suppress
(
"FunctionName"
)
internal
fun
QQAndroidBot
(
account
:
BotAccount
,
configuration
:
BotConfiguration
):
QQAndroidBot
=
QQAndroidBot
(
ContextImpl
(),
account
,
configuration
)
@UseExperimental
(
MiraiInternalAPI
::
class
)
internal
actual
class
QQAndroidBot
actual
constructor
(
context
:
Context
,
account
:
BotAccount
,
...
...
mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/SystemDeviceInfo.kt
View file @
f9cf47a1
package
net.mamoe.mirai.qqandroid.utils
import
kotlinx.io.core.toByteArray
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.localIpAddress
actual
class
SystemDeviceInfo
actual
constructor
(
context
:
Context
)
:
DeviceInfo
(
context
)
{
...
...
@@ -39,8 +40,4 @@ actual class SystemDeviceInfo actual constructor(context: Context) : DeviceInfo(
override
val
codename
:
ByteArray
get
()
=
"REL"
.
toByteArray
()
override
val
sdk
:
Int
get
()
=
29
}
}
actual
abstract
class
Context
open
class
ContextImpl
:
Context
()
\ No newline at end of file
}
\ No newline at end of file
mirai-core-timpc/src/commonMain/kotlin/net.mamoe.mirai.timpc/TIMPC.kt
View file @
f9cf47a1
...
...
@@ -7,13 +7,21 @@ import net.mamoe.mirai.BotAccount
import
net.mamoe.mirai.BotFactory
import
net.mamoe.mirai.timpc.TIMPC.Bot
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
net.mamoe.mirai.utils.MiraiInternalAPI
/**
* TIM PC 协议的 [Bot] 构造器.
*/
@UseExperimental
(
MiraiInternalAPI
::
class
)
object
TIMPC
:
BotFactory
{
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
override
fun
Bot
(
account
:
BotAccount
,
configuration
:
BotConfiguration
):
Bot
=
TIMPCBot
(
account
,
configuration
)
override
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
):
Bot
=
TIMPCBot
(
BotAccount
(
qq
,
password
),
configuration
)
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
fun
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
):
Bot
=
TIMPCBot
(
BotAccount
(
qq
,
password
),
configuration
)
}
\ No newline at end of file
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.kt
0 → 100644
View file @
f9cf47a1
package
net.mamoe.mirai.utils
actual
typealias
Context
=
android
.
content
.
Context
\ No newline at end of file
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotAccount.kt
View file @
f9cf47a1
...
...
@@ -3,9 +3,11 @@
package
net.mamoe.mirai
import
kotlinx.io.core.toByteArray
import
net.mamoe.mirai.utils.MiraiInternalAPI
import
net.mamoe.mirai.utils.md5
import
kotlin.annotation.AnnotationTarget.*
@MiraiInternalAPI
data class
BotAccount
(
/**
* **注意**: 在 Android 协议, 总是使用 `QQAndroidClient.uin` 或 [Bot.uin], 而不要使用 [BotAccount.id]. 将来 [BotAccount.id] 可能会变为 [String]
...
...
@@ -23,4 +25,4 @@ data class BotAccount(
@Retention
(
AnnotationRetention
.
SOURCE
)
@Target
(
CLASS
,
TYPEALIAS
,
FUNCTION
,
PROPERTY
,
FIELD
,
CONSTRUCTOR
)
@Experimental
(
level
=
Experimental
.
Level
.
WARNING
)
annotation
class
RawAccountIdUse
\ No newline at end of file
internal
annotation
class
RawAccountIdUse
\ No newline at end of file
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt
View file @
f9cf47a1
...
...
@@ -3,6 +3,9 @@
package
net.mamoe.mirai
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmOverloads
/**
* 构造 [Bot] 的工厂.
...
...
@@ -15,23 +18,11 @@ interface BotFactory {
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
fun
Bot
(
account
:
BotAccount
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
fun
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
=
this
.
Bot
(
BotAccount
(
qq
,
password
),
configuration
)
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
}
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
inline
fun
BotFactory
.
Bot
(
account
:
BotAccount
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
this
.
Bot
(
account
,
BotConfiguration
().
apply
(
configuration
))
/**
* 使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
inline
fun
BotFactory
.
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
this
.
Bot
(
qq
,
password
,
BotConfiguration
().
apply
(
configuration
))
\ No newline at end of file
inline
fun
BotFactory
.
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
this
.
Bot
(
context
,
qq
,
password
,
BotConfiguration
().
apply
(
configuration
))
\ No newline at end of file
mirai-core
-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid
/utils/Context.kt
→
mirai-core
/src/commonMain/kotlin/net.mamoe.mirai
/utils/Context.kt
View file @
f9cf47a1
package
net.mamoe.mirai.
qqandroid.
utils
package
net.mamoe.mirai.utils
/**
* On Android, typealias to `android.content.Context`
...
...
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactoryJvm.kt
View file @
f9cf47a1
...
...
@@ -3,14 +3,17 @@
package
net.mamoe.mirai
import
net.mamoe.mirai.utils.BotConfiguration
import
net.mamoe.mirai.utils.Context
// Do not use ServiceLoader. Probably not working on MPP
@PublishedApi
internal
val
factory
:
BotFactory
=
run
{
try
{
runCatching
{
Class
.
forName
(
"net.mamoe.mirai.timpc.TIMPC"
).
kotlin
.
objectInstance
as
BotFactory
}
catch
(
ignored
:
Exception
)
{
null
}.
getOrElse
{
runCatching
{
Class
.
forName
(
"net.mamoe.mirai.qqandroid.QQAndroid"
).
kotlin
.
objectInstance
as
BotFactory
}.
getOrNull
()
}
}
?:
error
(
"""
...
...
@@ -24,23 +27,11 @@ internal val factory: BotFactory = run {
/**
* 加载现有协议的 [BotFactory], 并使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
fun
Bot
(
account
:
BotAccount
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
=
factory
.
Bot
(
account
,
configuration
)
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
=
factory
.
Bot
(
context
,
qq
,
password
,
configuration
)
/**
* 加载现有协议的 [BotFactory], 并使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
fun
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
BotConfiguration
=
BotConfiguration
.
Default
):
Bot
=
factory
.
Bot
(
qq
,
password
,
configuration
)
/**
* 加载现有协议的 [BotFactory], 并使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
inline
fun
Bot
(
account
:
BotAccount
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
factory
.
Bot
(
account
,
configuration
)
/**
* 加载现有协议的 [BotFactory], 并使用指定的 [配置][configuration] 构造 [Bot] 实例
*/
inline
fun
Bot
(
qq
:
Long
,
password
:
String
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
factory
.
Bot
(
qq
,
password
,
configuration
)
\ No newline at end of file
inline
fun
Bot
(
context
:
Context
,
qq
:
Long
,
password
:
String
,
configuration
:
(
BotConfiguration
.()
->
Unit
)):
Bot
=
factory
.
Bot
(
context
,
qq
,
password
,
configuration
)
\ No newline at end of file
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/Context.kt
0 → 100644
View file @
f9cf47a1
package
net.mamoe.mirai.utils
actual
abstract
class
Context
open
class
ContextImpl
:
Context
()
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment