mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-13 14:50:43 +08:00
StatusCommand
This commit is contained in:
parent
1c7ebe2413
commit
4a29094ebe
@ -20,11 +20,14 @@ import net.mamoe.mirai.console.command.descriptor.CommandValueArgumentParser.Com
|
|||||||
import net.mamoe.mirai.console.command.descriptor.PermissionIdValueArgumentParser
|
import net.mamoe.mirai.console.command.descriptor.PermissionIdValueArgumentParser
|
||||||
import net.mamoe.mirai.console.command.descriptor.PermitteeIdValueArgumentParser
|
import net.mamoe.mirai.console.command.descriptor.PermitteeIdValueArgumentParser
|
||||||
import net.mamoe.mirai.console.command.descriptor.buildCommandArgumentContext
|
import net.mamoe.mirai.console.command.descriptor.buildCommandArgumentContext
|
||||||
|
import net.mamoe.mirai.console.internal.MiraiConsoleBuildConstants
|
||||||
|
import net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge
|
||||||
import net.mamoe.mirai.console.internal.command.CommandManagerImpl
|
import net.mamoe.mirai.console.internal.command.CommandManagerImpl
|
||||||
import net.mamoe.mirai.console.internal.command.CommandManagerImpl.allRegisteredCommands
|
import net.mamoe.mirai.console.internal.command.CommandManagerImpl.allRegisteredCommands
|
||||||
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.*
|
import net.mamoe.mirai.console.internal.data.builtins.AutoLoginConfig.Account.*
|
||||||
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.plugin.PluginManagerImpl
|
||||||
import net.mamoe.mirai.console.internal.util.runIgnoreException
|
import net.mamoe.mirai.console.internal.util.runIgnoreException
|
||||||
import net.mamoe.mirai.console.permission.Permission
|
import net.mamoe.mirai.console.permission.Permission
|
||||||
import net.mamoe.mirai.console.permission.PermissionService
|
import net.mamoe.mirai.console.permission.PermissionService
|
||||||
@ -33,12 +36,19 @@ import net.mamoe.mirai.console.permission.PermissionService.Companion.findCorres
|
|||||||
import net.mamoe.mirai.console.permission.PermissionService.Companion.getPermittedPermissions
|
import net.mamoe.mirai.console.permission.PermissionService.Companion.getPermittedPermissions
|
||||||
import net.mamoe.mirai.console.permission.PermissionService.Companion.permit
|
import net.mamoe.mirai.console.permission.PermissionService.Companion.permit
|
||||||
import net.mamoe.mirai.console.permission.PermitteeId
|
import net.mamoe.mirai.console.permission.PermitteeId
|
||||||
|
import net.mamoe.mirai.console.plugin.name
|
||||||
|
import net.mamoe.mirai.console.plugin.version
|
||||||
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||||
import net.mamoe.mirai.console.util.ConsoleInternalApi
|
import net.mamoe.mirai.console.util.ConsoleInternalApi
|
||||||
import net.mamoe.mirai.event.events.EventCancelledException
|
import net.mamoe.mirai.event.events.EventCancelledException
|
||||||
import net.mamoe.mirai.message.nextMessageOrNull
|
import net.mamoe.mirai.message.nextMessageOrNull
|
||||||
import net.mamoe.mirai.utils.secondsToMillis
|
import net.mamoe.mirai.utils.secondsToMillis
|
||||||
|
import java.lang.management.ManagementFactory
|
||||||
|
import java.lang.management.MemoryUsage
|
||||||
|
import java.time.ZoneId
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
import kotlin.concurrent.thread
|
import kotlin.concurrent.thread
|
||||||
|
import kotlin.math.floor
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
|
|
||||||
@ -325,4 +335,83 @@ public object BuiltInCommands {
|
|||||||
sendMessage("成功删除 '$account' 的配置 '$configKey'.")
|
sendMessage("成功删除 '$account' 的配置 '$configKey'.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object StatusCommand : SimpleCommand(
|
||||||
|
ConsoleCommandOwner, "status", "状态",
|
||||||
|
description = "获取 Mirai Console 运行状态"
|
||||||
|
), BuiltInCommandInternal {
|
||||||
|
@Handler
|
||||||
|
public suspend fun CommandSender.handle() {
|
||||||
|
sendMessage(buildString {
|
||||||
|
val buildDateFormatted =
|
||||||
|
MiraiConsoleBuildConstants.buildDate.atZone(ZoneId.systemDefault())
|
||||||
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||||
|
|
||||||
|
append("Running MiraiConsole v${MiraiConsoleBuildConstants.versionConst}, built on ").append(buildDateFormatted)
|
||||||
|
.append(".\n")
|
||||||
|
append(MiraiConsoleImplementationBridge.frontEndDescription.render()).append("\n\n")
|
||||||
|
append("Plugins: ")
|
||||||
|
if (PluginManagerImpl.resolvedPlugins.isEmpty()) {
|
||||||
|
append("<none>")
|
||||||
|
} else {
|
||||||
|
PluginManagerImpl.resolvedPlugins.joinTo(this) { plugin ->
|
||||||
|
"${plugin.name} v${plugin.version}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
append("\n\n")
|
||||||
|
val memoryMXBean = ManagementFactory.getMemoryMXBean()
|
||||||
|
|
||||||
|
append("Object Pending Finalization Count: ")
|
||||||
|
.append(memoryMXBean.objectPendingFinalizationCount)
|
||||||
|
.append("\n")
|
||||||
|
|
||||||
|
append(" Heap Memory: ")
|
||||||
|
renderMemoryUsage(memoryMXBean.heapMemoryUsage)
|
||||||
|
append("\nNon-Heap Memory: ")
|
||||||
|
renderMemoryUsage(memoryMXBean.nonHeapMemoryUsage)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private const val MEM_B = 1024L
|
||||||
|
private const val MEM_KB = 1024L shl 10
|
||||||
|
private const val MEM_MB = 1024L shl 20
|
||||||
|
private const val MEM_GB = 1024L shl 30
|
||||||
|
|
||||||
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
|
private inline fun StringBuilder.appendDouble(number: Double): StringBuilder =
|
||||||
|
append(floor(number * 100) / 100)
|
||||||
|
|
||||||
|
private fun StringBuilder.renderMemoryUsageNumber(num: Long) {
|
||||||
|
when {
|
||||||
|
num == -1L -> {
|
||||||
|
append(num)
|
||||||
|
}
|
||||||
|
num < MEM_B -> {
|
||||||
|
append(num).append("B")
|
||||||
|
}
|
||||||
|
num < MEM_KB -> {
|
||||||
|
appendDouble(num / 1024.0).append("KB")
|
||||||
|
}
|
||||||
|
num < MEM_MB -> {
|
||||||
|
appendDouble((num ushr 10) / 1024.0).append("MB")
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
appendDouble((num ushr 20) / 1024.0).append("GB")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun StringBuilder.renderMemoryUsage(usage: MemoryUsage) {
|
||||||
|
append("(committed / init / used / max) [")
|
||||||
|
renderMemoryUsageNumber(usage.committed)
|
||||||
|
append(", ")
|
||||||
|
renderMemoryUsageNumber(usage.init)
|
||||||
|
append(", ")
|
||||||
|
renderMemoryUsageNumber(usage.used)
|
||||||
|
append(", ")
|
||||||
|
renderMemoryUsageNumber(usage.max)
|
||||||
|
append("]")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user