Auto

data class Auto(val baseDir: String? = null, val fileBasedFilename: String = "device.json") : DeviceInfoConfiguration(source)

自动寻找或配置deviceInfo。

Auto 首先会像 Resource 一样,去寻找几个指定的资源文件:

  • $BASE_DIR$device-$CODE$.json

  • $BASE_DIR$device.json

其中,$BASE_DIR$ 为配置属性 baseDir,默认为空,即根目录。 最终得到的路径会先尝试从本地文件中寻找,而后会尝试在资源目录中寻找。

寻找顺序为:

  1. 本地文件: $BASE_DIR$device-$CODE$.json

  2. 资源文件: $BASE_DIR$device-$CODE$.json

  3. 本地文件: $BASE_DIR$device.json

  4. 资源文件: $BASE_DIR$device.json

如下示例中,

{
"deviceInfo": {
"type": "auto",
"baseDir": "devices"
}
}

假设当前bot.id为 123456,则最终寻找的目标路径为:

  • devices/device-123456.json

  • devices/device.json

baseDir 允许使用 $CODE$ 占位符进行替换,例如:

{
"deviceInfo": {
"type": "auto",
"baseDir": "devices-$CODE$"
}
}

假设当前bot.id为 123456, 则上述配置中的的 baseDir 最终会被替换为 devices-123456, 并最终会去寻找如下目标:

  • devices-123456/device-123456.json

  • devices-123456/device.json

Auto.baseDir 扫描时,解析的本地文件格式会优先尝试直接通过 DeviceInfo 进行反序列化, 如果失败则会尝试通过 DeviceInfo.loadAsDeviceInfo 进行。 而对于 资源文件 则只会尝试通过 DeviceInfo 反序列化进行加载。

如果无法在上述内容中找到存在的资源,则 Auto 会采用 FileBased 的行为。

Constructors

Link copied to clipboard
fun Auto(baseDir: String? = null, fileBasedFilename: String = "device.json")

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
open operator override fun invoke(bot: Bot): DeviceInfo
Link copied to clipboard
protected fun String.replaceCodeMark(code: String): String

Properties

Link copied to clipboard
val baseDir: String? = null
Link copied to clipboard

baseDir 中没有配置内容或无法寻找到目标结果时,通过 FileBased 进行加载的文件名。