mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-10 18:40:15 +08:00
Configure workingDir for bots, support custom file name for deviceInfo, close #249
This commit is contained in:
parent
68860f7e12
commit
0970343bdb
@ -16,10 +16,7 @@ import kotlinx.coroutines.CoroutineScope
|
|||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import net.mamoe.mirai.Bot
|
import net.mamoe.mirai.Bot
|
||||||
import net.mamoe.mirai.console.MalformedMiraiConsoleImplementationError
|
import net.mamoe.mirai.console.*
|
||||||
import net.mamoe.mirai.console.MiraiConsole
|
|
||||||
import net.mamoe.mirai.console.MiraiConsoleFrontEndDescription
|
|
||||||
import net.mamoe.mirai.console.MiraiConsoleImplementation
|
|
||||||
import net.mamoe.mirai.console.command.BuiltInCommands
|
import net.mamoe.mirai.console.command.BuiltInCommands
|
||||||
import net.mamoe.mirai.console.command.CommandManager
|
import net.mamoe.mirai.console.command.CommandManager
|
||||||
import net.mamoe.mirai.console.command.ConsoleCommandSender
|
import net.mamoe.mirai.console.command.ConsoleCommandSender
|
||||||
@ -29,6 +26,7 @@ import net.mamoe.mirai.console.extensions.PostStartupExtension
|
|||||||
import net.mamoe.mirai.console.extensions.SingletonExtensionSelector
|
import net.mamoe.mirai.console.extensions.SingletonExtensionSelector
|
||||||
import net.mamoe.mirai.console.internal.command.CommandConfig
|
import net.mamoe.mirai.console.internal.command.CommandConfig
|
||||||
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig
|
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig
|
||||||
|
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.ConfigurationKey
|
||||||
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.MD5
|
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.MD5
|
||||||
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.PLAIN
|
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.PasswordKind.PLAIN
|
||||||
import net.mamoe.mirai.console.internal.data.builtins.ConsoleDataScope
|
import net.mamoe.mirai.console.internal.data.builtins.ConsoleDataScope
|
||||||
@ -223,8 +221,7 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope, MiraiConsoleI
|
|||||||
fun BotConfiguration.configBot() {
|
fun BotConfiguration.configBot() {
|
||||||
mainLogger.info { "Auto-login ${account.account}" }
|
mainLogger.info { "Auto-login ${account.account}" }
|
||||||
|
|
||||||
account.configuration[AutoLoginConfig.Account.ConfigurationKey.protocol]
|
account.configuration[ConfigurationKey.protocol]?.let { protocol ->
|
||||||
?.let { protocol ->
|
|
||||||
this.protocol = runCatching {
|
this.protocol = runCatching {
|
||||||
BotConfiguration.MiraiProtocol.valueOf(protocol.toString())
|
BotConfiguration.MiraiProtocol.valueOf(protocol.toString())
|
||||||
}.getOrElse {
|
}.getOrElse {
|
||||||
@ -234,6 +231,24 @@ internal object MiraiConsoleImplementationBridge : CoroutineScope, MiraiConsoleI
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
workingDir = MiraiConsole.rootDir
|
||||||
|
.resolve("bots")
|
||||||
|
.resolve(id.toString())
|
||||||
|
|
||||||
|
if (!workingDir.exists()
|
||||||
|
&& workingDir.mkdirs()
|
||||||
|
&& account.configuration[ConfigurationKey.device] == null // no custom device
|
||||||
|
) {
|
||||||
|
// copy root/deviceInfo.json to bots/id/deviceInfo.json
|
||||||
|
val deviceInfoInRoot = MiraiConsole.rootDir.resolve("deviceInfo.json")
|
||||||
|
deviceInfoInRoot.copyTo(workingDir.resolve("deviceInfo.json"))
|
||||||
|
fileBasedDeviceInfo("deviceInfo.json")
|
||||||
|
}
|
||||||
|
|
||||||
|
account.configuration[ConfigurationKey.device]?.let { device ->
|
||||||
|
fileBasedDeviceInfo(device.toString())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val bot = when (account.password.kind) {
|
val bot = when (account.password.kind) {
|
||||||
|
@ -31,10 +31,13 @@ public object AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
|||||||
@Comment("账号, 现只支持 QQ 数字账号")
|
@Comment("账号, 现只支持 QQ 数字账号")
|
||||||
val account: String,
|
val account: String,
|
||||||
val password: Password,
|
val password: Password,
|
||||||
@Comment("""
|
@Comment(
|
||||||
|
"""
|
||||||
账号配置. 可用配置列表 (注意大小写):
|
账号配置. 可用配置列表 (注意大小写):
|
||||||
"protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH"
|
"protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH"
|
||||||
""")
|
"device": "deviceInfo.json"
|
||||||
|
"""
|
||||||
|
)
|
||||||
val configuration: Map<ConfigurationKey, @Serializable(with = YamlDynamicSerializer::class) Any> = mapOf(),
|
val configuration: Map<ConfigurationKey, @Serializable(with = YamlDynamicSerializer::class) Any> = mapOf(),
|
||||||
) {
|
) {
|
||||||
@Serializable
|
@Serializable
|
||||||
@ -49,6 +52,7 @@ public object AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
|||||||
@Serializable
|
@Serializable
|
||||||
public enum class ConfigurationKey {
|
public enum class ConfigurationKey {
|
||||||
protocol,
|
protocol,
|
||||||
|
device,
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -76,7 +80,16 @@ public object AutoLoginConfig : AutoSavePluginConfig("AutoLogin") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public val accounts: MutableList<Account> by value(mutableListOf(
|
public val accounts: MutableList<Account> by value(
|
||||||
Account("123456", Account.Password(Account.PasswordKind.PLAIN, "pwd"), mapOf(Account.ConfigurationKey.protocol to "ANDROID_PHONE"))
|
mutableListOf(
|
||||||
))
|
Account(
|
||||||
|
account = "123456",
|
||||||
|
password = Account.Password(Account.PasswordKind.PLAIN, "pwd"),
|
||||||
|
configuration = mapOf(
|
||||||
|
Account.ConfigurationKey.protocol to "ANDROID_PHONE",
|
||||||
|
Account.ConfigurationKey.device to "deviceInfo.json"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
@ -22,7 +22,8 @@ fun main() {
|
|||||||
|
|
||||||
internal fun configureUserDir() {
|
internal fun configureUserDir() {
|
||||||
val projectDir = runCatching {
|
val projectDir = runCatching {
|
||||||
File(".").resolve("frontend").resolve("mirai-console-terminal")
|
File(".").resolve("frontend").resolve("mirai-console-terminal").takeIf { it.isDirectory }
|
||||||
|
?: File(".").resolve("mirai-console/frontend").resolve("mirai-console-terminal")
|
||||||
}.getOrElse { return }
|
}.getOrElse { return }
|
||||||
if (projectDir.isDirectory) {
|
if (projectDir.isDirectory) {
|
||||||
val run = projectDir.resolve("run")
|
val run = projectDir.resolve("run")
|
||||||
|
Loading…
Reference in New Issue
Block a user